Object Gateway 가이드


Red Hat Ceph Storage 7

Ceph Object Gateway 배포, 구성 및 관리

Red Hat Ceph Storage Documentation Team

초록

이 문서에서는 Ceph Object Gateway 환경 배포, 구성 및 관리에 대한 지침을 제공합니다. 이 가이드는 "Day Zero", "Day One" 및 "Day Two" 조직 방법론을 사용하여 논리적 진행 경로를 제공합니다. Day Zero는 잠재적 솔루션을 구현하기 전에 연구 및 계획을 수행하는 단계입니다. 1 장과 2 장을 참조하십시오. Day 1는 소프트웨어의 실제 배포 및 설치가 수행되는 단계입니다 3 장을 참조하십시오. Day 2는 모든 기본 구성 및 고급 구성이 수행되는 단계입니다 4장,5장 및 6장을 확인합니다.
Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지에서 참조하십시오.

1장. Ceph Object Gateway

Ceph Object Gateway(RGW)는 Ceph 스토리지 클러스터에 대한 RESTful 게이트웨이를 애플리케이션에 제공하기 위해 librados 라이브러리에 빌드된 오브젝트 스토리지 인터페이스입니다. Ceph Object Gateway는 다음 세 가지 인터페이스를 지원합니다.

S3 호환성:

Amazon S3 RESTful API의 큰 하위 집합과 호환되는 인터페이스가 포함된 오브젝트 스토리지 기능을 제공합니다.

S3 select를 실행하여 처리량을 가속화할 수 있습니다. 사용자는 중재자 없이 S3 선택 쿼리를 직접 실행할 수 있습니다. CSV용 S3 선택 워크플로우는 두 가지로, 하나는 Apache Parquet(Parquet)용이고, 하나는 S3 select 작업에 CSV 및 Parquet 오브젝트를 제공합니다. 이러한 S3 선택 작업에 대한 자세한 내용은 Red Hat Ceph Storage 개발자 가이드의 S3 선택 작업을 참조하십시오.

Swift 호환성:

OpenStack Swift API의 대규모 하위 집합과 호환되는 인터페이스가 포함된 오브젝트 스토리지 기능을 제공합니다.

Ceph Object Gateway는 Ceph 스토리지 클러스터와 상호 작용하는 서비스입니다. 이 솔루션은 OpenStack Swift 및 Amazon S3과 호환되는 인터페이스를 제공하므로 Ceph Object Gateway에는 자체 사용자 관리 시스템이 있습니다. Ceph Object Gateway는 Ceph 블록 장치 클라이언트에서 데이터를 저장하는 데 사용되는 동일한 Ceph 스토리지 클러스터에 데이터를 저장할 수 있지만 별도의 풀이 사용되며 다른 CRUSH 계층 구조도 사용할 수 있습니다. S3 및 Swift API는 공통 네임스페이스를 공유하므로 하나의 API로 데이터를 작성하고 다른 API에서 검색할 수 있습니다.

관리 API:

Ceph Object Gateways를 관리하기 위한 관리 인터페이스를 제공합니다.

관리 API 요청은 admin 리소스 엔드포인트로 시작하는 URI에서 수행됩니다. 관리 API에 대한 권한 부여는 S3 권한 부여 메커니즘을 복제합니다. 일부 작업에는 사용자에게 특별한 관리 기능이 있어야 합니다. 응답 유형은 요청에 format 옵션을 지정하여 XML 또는 JSON일 수 있지만 기본값은 JSON 형식입니다.

WORM 소개

WORM(Write-Once-Read-Many)은 프로덕션 영역에서 오브젝트 및 버킷이 손상된 경우에도 데이터 보호 및 데이터 검색을 보장하는 데 사용되는 보안 데이터 스토리지 모델입니다.

Red Hat Ceph Storage에서는 WORM(Write-Once-Read-Many) 모델을 사용하여 오브젝트 및 버킷을 저장하는 데 사용되는 읽기 전용 기능이 있는 S3 Object Lock을 사용하여 데이터 보안을 수행하여 삭제 또는 덮어쓸 수 없습니다. Red Hat Ceph Storage 관리자도 삭제할 수 없습니다.

S3 Object Lock은 다음 두 가지 보존 모드를 제공합니다.

  • 거버넌스
  • 컴플라이언스

이러한 보존 모드는 오브젝트에 다양한 수준의 보호 기능을 적용합니다. Object Lock으로 보호되는 모든 오브젝트 버전에 보존 모드를 적용할 수 있습니다.

GOVERNANCE에서는 특별한 권한이 없는 경우 오브젝트 버전을 덮어쓰거나 삭제하거나 잠금 설정을 변경할 수 없습니다. GOVERNANCE 모드에서는 오브젝트를 대부분의 사용자가 삭제하지 않도록 보호할 수 있지만, 필요한 경우 일부 사용자에게 보존 설정을 변경하거나 오브젝트를 삭제할 수 있는 권한을 부여할 수 있습니다.

COMPLIANCE 모드에서는 보호된 오브젝트 버전을 사용자가 덮어쓰거나 삭제할 수 없습니다. 개체가 COMPLIANCE 모드에서 잠긴 경우 해당 보존 모드를 변경하거나 줄일 수 없습니다.

2장. 고려 사항 및 권장 사항

스토리지 관리자는 Ceph Object Gateway를 실행하고 다중 사이트 Ceph Object Gateway 솔루션을 구현하기 전에 고려해야 할 사항을 기본적으로 이해하는 것이 중요합니다. 하드웨어 및 네트워크 요구 사항을 알아보고 Ceph Object Gateway와 함께 작동하는 워크로드 유형과 Red Hat의 권장 사항을 파악할 수 있습니다.

사전 요구 사항

  • 스토리지 솔루션을 이해, 검토, 계획합니다.

2.1. Red Hat Ceph Storage의 네트워크 고려 사항

클라우드 스토리지 솔루션의 중요한 측면은 네트워크 대기 시간 및 기타 요인으로 인해 스토리지 클러스터가 IOPS에서 실행될 수 있다는 것입니다. 또한 스토리지 클러스터에 스토리지 용량이 부족하기 전에 대역폭 제약으로 인해 처리량이 부족할 수 있습니다. 즉, 네트워크 하드웨어 구성이 가격 대비 성능 요구 사항을 충족하기 위해 선택한 워크로드를 지원해야 합니다.

스토리지 관리자는 스토리지 클러스터를 최대한 빨리 복구하는 것을 선호합니다. 저장소 클러스터 네트워크에 대한 대역폭 요구 사항을 신중하게 고려하고 네트워크 링크 초과 서브스크립션에 유의하고 클러스터 내 트래픽을 클라이언트 간 트래픽에서 분리합니다. 또한 SSD(Solid State Disk), 플래시, NVMe 및 기타 고성능 저장 장치의 사용을 고려할 때 네트워크 성능이 점점 더 중요해진다는 점을 고려하십시오.

Ceph는 공용 네트워크 및 스토리지 클러스터 네트워크를 지원합니다. 공용 네트워크는 Ceph 모니터와의 통신 및 클라이언트 트래픽을 처리합니다. 스토리지 클러스터 네트워크는 Ceph OSD 하트비트, 복제, 백필, 복구 트래픽을 처리합니다. 최소한 하나의 10GB 이더넷 링크를 스토리지 하드웨어에 사용해야 하며 연결 및 처리량을 위해 10GB 이더넷 링크를 추가할 수 있습니다.

중요

Red Hat은 복제된 풀에서 여러 기본으로 osd_pool_default_size 를 사용하여 공용 네트워크의 배수가 되도록 대역폭을 스토리지 클러스터 네트워크에 할당할 것을 권장합니다. 또한 별도의 네트워크 카드에서 공용 및 스토리지 클러스터 네트워크를 실행하는 것이 좋습니다.

중요

Red Hat은 프로덕션 환경에서 Red Hat Ceph Storage 배포에 10GB 이더넷을 사용할 것을 권장합니다. 1GB 이더넷 네트워크는 프로덕션 스토리지 클러스터에 적합하지 않습니다.

드라이브 오류가 발생하는 경우 1GB 이더넷 네트워크에서 1TB의 데이터를 복제하는 데 3시간이 걸리며 3TB의 데이터를 9시간이 소요됩니다. 3TB를 사용하는 것이 일반적인 드라이브 구성입니다. 반면 10GB 이더넷 네트워크를 사용하면 복제 시간은 20분과 1시간입니다. Ceph OSD가 실패하면 스토리지 클러스터는 실패한 OSD와 동일한 장애 도메인 및 장치 클래스 내의 다른 OSD에 포함된 데이터를 복제하여 복구됩니다.

랙과 같은 대규모 도메인에 장애가 발생하면 스토리지 클러스터가 훨씬 더 많은 대역폭을 사용한다는 것을 의미합니다. 대규모 스토리지 구현에 공통적인 여러 랙으로 구성된 스토리지 클러스터를 구축할 때 최적의 성능을 위해 "팻 트리" 설계의 스위치 간 네트워크 대역폭을 최대한 활용하는 것이 좋습니다. 일반적인 10GB 이더넷 스위치에는 48개의 10GB 포트와 40GB 포트 4개가 있습니다. 최대 처리량을 위해 스파인에서 40GB 포트를 사용합니다. 또는 다른 랙 및 스파인 라우터에 연결하기 위해 사용하지 않는 10GB 포트를 40GB 이상의 포트로 집계하는 것이 좋습니다. 또한 네트워크 인터페이스를 결합하는 데 LACP 모드 4를 사용하는 것이 좋습니다. 또한, 특히 백엔드 또는 클러스터 네트워크에서 최대 전송 단위(MTU)가 9000인 점보 프레임을 사용합니다.

Red Hat Ceph Storage 클러스터를 설치하고 테스트하기 전에 네트워크 처리량을 확인합니다. Ceph에서 대부분의 성능 관련 문제는 일반적으로 네트워킹 문제로 시작합니다. kinked 또는 bent cat-6 케이블과 같은 간단한 네트워크 문제로 인해 대역폭이 저하될 수 있습니다. 전면 네트워크에 최소 10GB 이더넷을 사용합니다. 대규모 클러스터의 경우 백엔드 또는 클러스터 네트워크에 40GB 이더넷을 사용하는 것이 좋습니다.

중요

네트워크 최적화를 위해 Red Hat은 대역폭당 CPU를 개선하고 차단되지 않는 네트워크 스위치 백 플레인에 점보 프레임을 사용하는 것이 좋습니다. Red Hat Ceph Storage는 공용 네트워크와 클러스터 네트워크 모두에 대해 통신 경로의 모든 네트워킹 장치에 걸쳐 동일한 MTU 값이 필요합니다. 프로덕션에서 Red Hat Ceph Storage 클러스터를 사용하기 전에 환경의 모든 호스트 및 네트워킹 장치에서 MTU 값이 동일한지 확인합니다.

2.2. Red Hat Ceph Storage의 기본 고려 사항

Red Hat Ceph Storage를 사용하는 첫 번째 고려 사항은 데이터를 위한 스토리지 전략을 개발하는 것입니다. 스토리지 전략은 특정 사용 사례에 서비스를 제공하는 데이터를 저장하는 방법입니다. OpenStack과 같은 클라우드 플랫폼에 대한 볼륨과 이미지를 저장해야 하는 경우 저널용 SSD(Solid State Drives)로 더 빠른 SAS( Serial Attached SCSI) 드라이브에 데이터를 저장하도록 선택할 수 있습니다. 반대로 S3 또는 Swift 호환 게이트웨이에 대한 오브젝트 데이터를 저장해야 하는 경우 기존 SATA(Serial Advanced Technology Attachment) 드라이브와 같이 더 경제적인 것을 사용할 수 있습니다. Red Hat Ceph Storage는 동일한 스토리지 클러스터에 있는 두 시나리오를 모두 수용할 수 있지만, 클라우드 플랫폼에 빠른 스토리지 전략을 제공하는 수단과 개체 저장소에 더 많은 기존 스토리지를 제공하는 수단이 필요합니다.

Ceph 배포의 가장 중요한 단계 중 하나는 스토리지 클러스터의 사용 사례와 워크로드에 적합한 가격대 성능 프로필을 식별하는 것입니다. 사용 사례에 적합한 하드웨어를 선택하는 것이 중요합니다. 예를 들어, 콜드 스토리지 애플리케이션에 최적화된 IOPS 하드웨어를 선택하면 하드웨어 비용이 불필요하게 증가합니다. 반면, IOPS 집약적인 워크로드에서 용량에 최적화된 하드웨어를 선택하는 경우 성능 저하에 대해 불만을 제기하는 사용자가 불만을 줄 수 있습니다.

Red Hat Ceph Storage는 여러 스토리지 전략을 지원할 수 있습니다. 사운드 스토리지 전략을 개발하는 데 도움이 되는 사용 사례, 비용 대비 성능 장단점 및 데이터 지속성이 가장 중요한 고려 사항입니다.

사용 사례

Ceph는 대용량 스토리지 용량을 제공하며 다음과 같은 다양한 사용 사례를 지원합니다.

  • Ceph 블록 장치 클라이언트는 COW(Copy-On-Write 복제)와 같은 고성능 기능을 갖춘 볼륨 및 이미지에 대한 무제한 스토리지를 제공하는 클라우드 플랫폼용 최고의 스토리지 백엔드입니다.
  • Ceph Object Gateway 클라이언트는 오디오, 비트맵, 비디오 및 기타 데이터와 같은 오브젝트에 RESTful S3 호환 및 Swift 호환 오브젝트 스토리지를 제공하는 클라우드 플랫폼의 선도적인 스토리지 백엔드입니다.
  • 기존 파일 스토리지를 위한 Ceph 파일 시스템입니다.

비용 vs. 성능 이점

속도, 크기, 내구성 등이 더 우수합니다. 그러나 각 최상급 품질에는 각각 비용이 들기 때문에 비용 효율적인 측면에서 그에 상응하는 비용 대 편익 절충이 있다. 성능 관점에서 다음 사용 사례를 고려하십시오. SSD는 상대적으로 적은 양의 데이터와 저널링에 매우 빠른 스토리지를 제공할 수 있습니다. 데이터베이스 또는 개체 인덱스를 저장하면 매우 빠른 SSD 풀의 이점을 얻을 수 있지만 다른 데이터에 너무 많은 비용이 듭니다. SSD 저널링을 사용하는 SAS 드라이브는 볼륨과 이미지의 경제적인 가격으로 빠른 성능을 제공합니다. SSD 저널링이 없는 SATA 드라이브는 전체 성능이 낮은 저렴한 스토리지를 제공합니다. OSD의 RHEA 계층 구조를 생성할 때는 사용 사례와 성능 장단점에 비해 사용 가능한 비용을 고려해야 합니다.

데이터 내결함성

대규모 클러스터에서는 하드웨어 장애가 예상되며 예외는 아닙니다. 그러나 데이터 손실 및 서비스 중단은 허용되지 않습니다. 이러한 이유로 데이터 지속성이 매우 중요합니다. Ceph는 여러 오브젝트 복제본 사본 또는 삭제 코딩 및 여러 코딩 청크를 사용하여 데이터 지속성을 처리합니다. 여러 복사본 또는 여러 코딩 청크를 사용하면 추가 비용과 혜택의 장단점이 있습니다. 즉, 복사본 또는 코딩 청크를 더 적게 저장하는 것이 더 저렴하지만 성능 저하된 상태로 서비스 쓰기 요청을 사용할 수 없게 될 수 있습니다. 일반적으로 두 개의 추가 사본이 있는 하나의 오브젝트 또는 두 개의 코딩 청크를 사용하면 스토리지 클러스터를 복구하는 동안 성능이 저하된 상태로 스토리지 클러스터가 기록되도록 할 수 있습니다.

복제는 하드웨어 장애 발생 시 장애 도메인에서 데이터의 중복 복사본을 하나 이상 저장합니다. 그러나 데이터의 중복 복사본은 규모에 따라 비용이 많이 들 수 있습니다. 예를 들어, 3개 복제를 사용하여 1페타바이트의 데이터를 저장하려면 최소 3페타바이트 이상의 스토리지 용량이 있는 클러스터가 필요합니다.

코딩 삭제는 데이터를 데이터 청크 및 코딩 청크로 저장합니다. 데이터 청크가 손실되는 경우 삭제 코딩은 나머지 데이터 청크 및 코딩 청크를 사용하여 손실된 데이터 청크를 복구할 수 있습니다. 삭제 코딩은 복제보다 상당히 경제적입니다. 예를 들어 데이터 청크 8개와 코딩 청크 3개가 있는 삭제 코딩을 사용하면 데이터 복사본 3개와 동일한 중복성이 제공됩니다. 그러나 이러한 인코딩 체계는 복제와 3x와 비교하여 약 1.5x의 초기 데이터를 사용합니다.

CRUSH 알고리즘은 Ceph가 스토리지 클러스터 내의 다른 위치에 추가 사본 또는 코딩 청크를 저장할 수 있도록 하여 이 프로세스를 지원합니다. 이렇게 하면 단일 스토리지 장치 또는 호스트에 장애가 발생해도 데이터 손실을 방지하는 데 필요한 모든 복사 또는 코딩 청크가 손실되지 않습니다. 비용 대비 이점의 장단점이 있는 스토리지 전략을 계획하고 데이터 지속성을 염두에 두고 Ceph 클라이언트에 스토리지 풀로 제공할 수 있습니다.

중요

데이터 스토리지 풀만 삭제 코딩을 사용할 수 있습니다. 서비스 데이터 및 버킷 인덱스를 저장하는 풀은 복제를 사용합니다.

중요

Ceph의 개체 복사 또는 코딩 청크를 사용하면 RAID 솔루션이 더 이상 사용되지 않습니다. Ceph는 이미 데이터 지속성을 처리하므로 RAID를 사용하지 마십시오. 성능이 저하된 RAID는 성능에 부정적인 영향을 미치며 RAID를 사용하여 데이터를 복구하는 것은 깊은 복사본 또는 코딩 청크를 사용하는 것보다 훨씬 느립니다.

2.2.1. Ceph 데몬과 이점 비교

컨테이너화된 Ceph 데몬을 동일한 호스트에서 배치할 수 있습니다. 다음은 일부 Ceph 데몬을 배치하면 다음과 같은 이점이 있습니다.

  • 소규모로 총소유비용(total cost of ownership)을 크게 개선합니다.
  • 전체 성능을 향상시킬 수 있습니다.
  • 최소 구성의 물리적 호스트 양을 줄입니다.
  • 리소스 활용 개선.
  • Red Hat Ceph Storage를 보다 쉽게 업그레이드할 수 있습니다.

컨테이너를 사용하면 다음 목록에서 하나의 데몬을 Ceph OSD 데몬(ceph-osd)과 함께 배치할 수 있습니다. 또한 Ceph Object Gateway(radosgw), Ceph 메타데이터 서버(ceph-mds) 및 Grafana의 경우 Ceph OSD 데몬과 아래 목록의 데몬과 함께 배치할 수 있습니다.

  • Ceph 메타 데이터 서버 (ceph-mds)
  • Ceph Monitor (ceph-mon)
  • Ceph Manager (ceph-mgr)
  • NFS Ganesha(nfs-ganesha)
  • Ceph Manager(ceph-grafana)
Expand
표 2.1. 데몬 배치 예
호스트 이름데몬데몬데몬

host1

OSD

모니터링 및 관리자

Prometheus

host2

OSD

모니터링 및 관리자

RGW

host3

OSD

모니터링 및 관리자

RGW

host4

OSD

메타 데이터 서버

 

host5

OSD

메타 데이터 서버

 
참고

ceph-monceph-mgr 은 공동 배치를 위해 두 개의 별도의 데몬으로 간주되지 않습니다.

Ceph 데몬을 ceph orch 명령에 --placement 옵션을 사용하여 명령행 인터페이스에서 배치하거나 서비스 사양 YAML 파일을 사용할 수 있습니다.

명령줄 예

[ceph: root@host01 /]# ceph orch apply mon --placement="host1 host2 host3"
Copy to Clipboard Toggle word wrap

서비스 사양 YAML 파일 예

service_type: mon
placement:
  hosts:
   - host01
   - host02
   - host03
Copy to Clipboard Toggle word wrap

[ceph: root@host01 /]# ceph orch apply -i mon.yml
Copy to Clipboard Toggle word wrap

Red Hat은 Ceph Object Gateway를 Ceph OSD 컨테이너와 연결하여 성능을 향상시키는 것이 좋습니다. 추가 하드웨어 비용을 발생시키지 않고 최고 성능을 달성하려면 호스트당 두 개의 Ceph Object Gateway 데몬을 사용합니다.

Ceph Object Gateway 명령줄 예

[ceph: root@host01 /]# ceph orch apply rgw example --placement="6 host1 host2 host3"
Copy to Clipboard Toggle word wrap

Ceph Object Gateway 서비스 사양 YAML 파일 예

service_type: rgw
service_id: example
placement:
  count: 6
  hosts:
   - host01
   - host02
   - host03
Copy to Clipboard Toggle word wrap

[ceph: root@host01 /]# ceph orch apply -i rgw.yml
Copy to Clipboard Toggle word wrap

아래 다이어그램은 공동 배치 및 비할당 데몬이 있는 스토리지 클러스터의 차이점을 보여줍니다.

그림 2.1. 공동 배치된 데몬

그림 2.2. 공동배치되지 않은 데몬

2.3. Red Hat Ceph Storage 워크로드 고려 사항

Ceph 스토리지 클러스터의 주요 이점 중 하나는 성능 도메인을 사용하여 동일한 스토리지 클러스터 내에서 다양한 유형의 워크로드를 지원할 수 있다는 것입니다. 각 성능 도메인과 다른 하드웨어 구성을 연결할 수 있습니다. 스토리지 관리자는 적절한 성능 도메인에 스토리지 풀을 배포할 수 있으므로 애플리케이션에 특정 성능 및 비용 프로필에 맞는 스토리지를 제공할 수 있습니다. 이러한 성능 도메인에 맞게 크기가 조정되고 최적화된 서버를 선택하는 것은 Red Hat Ceph Storage 클러스터를 설계하는 데 있어 필수적인 부분입니다.

데이터를 읽고 쓰는 Ceph 클라이언트 인터페이스의 경우 Ceph 스토리지 클러스터는 클라이언트가 데이터를 저장하는 간단한 풀로 나타납니다. 그러나 스토리지 클러스터는 클라이언트 인터페이스에 완전히 투명한 방식으로 많은 복잡한 작업을 수행합니다. Ceph OSD라고 하는 Ceph 클라이언트 및 Ceph 개체 스토리지 데몬은 모두 오브젝트 스토리지 및 검색에 대해 CRUSH(Controlled Replication Under Scalable Hashing) 알고리즘을 사용합니다. Ceph OSD는 스토리지 클러스터 내의 컨테이너에서 실행할 수 있습니다.

CRUSH 맵은 클러스터 리소스의 토폴로지를 설명하고 이 맵은 클라이언트 호스트와 클러스터 내의 Ceph 모니터 호스트에 모두 존재합니다. Ceph 클라이언트 및 Ceph OSD는 모두 CRUSH 맵과 CRUSH 알고리즘을 사용합니다. Ceph 클라이언트는 OSD와 직접 통신하여 중앙 집중식 개체 조회 및 잠재적인 성능 병목 현상을 제거합니다. CRUSH 맵과 해당 피어의 통신을 인식하면 OSD에서 복제, 백필 및 복구 기능을 처리할 수 있으므로 동적 오류 복구를 수행할 수 있습니다.

Ceph는 CRUSH 맵을 사용하여 장애 도메인을 구현합니다. 또한 Ceph는 CRUSH 맵을 사용하여 성능 도메인을 구현합니다. 이 도메인은 단순히 기본 하드웨어의 성능 프로파일을 고려합니다. CRUSH 맵은 Ceph가 데이터를 저장하는 방법을 설명하고, 이는 단순한 계층 구조, 특히 재활용 그래프 및 규칙 세트로 구현됩니다. CRUSH 맵은 여러 계층 구조를 지원하여 한 가지 유형의 하드웨어 성능 프로필을 분리할 수 있습니다. Ceph는 장치 "클래스"로 성능 도메인을 구현합니다.

예를 들어 동일한 Red Hat Ceph Storage 클러스터에 이러한 성능 도메인을 공존할 수 있습니다.

  • 하드 디스크 드라이브(HDD)는 일반적으로 비용 및 용량 중심 워크로드에 적합합니다.
  • 처리량에 민감한 워크로드는 일반적으로 SSD(반도체 드라이브)에서 Ceph 쓰기 저널과 함께 HDD를 사용합니다.
  • MySQL 및 MariaDB와 같은 IOPS 집약적 워크로드에서는 SSD를 자주 사용합니다.

그림 2.3. 성능 및 오류 도메인

워크로드

Red Hat Ceph Storage는 세 가지 주요 워크로드에 최적화되어 있습니다.

중요

스토리지 클러스터의 가격 및 성능에 큰 영향을 미칠 수 있으므로 어떤 하드웨어를 구입할지 고려하기 전에 Red Hat Ceph Storage 클러스터에서 실행되는 워크로드를 신중하게 고려합니다. 예를 들어 워크로드가 용량에 최적화되고 처리량이 최적화된 워크로드에 하드웨어가 더 적합한 경우 하드웨어는 필요한 것보다 비용이 많이 듭니다. 반대로 워크로드가 처리량에 최적화되고 하드웨어가 용량이 최적화된 워크로드에 더 적합한 경우 스토리지 클러스터가 성능이 저하될 수 있습니다.

  • IOPS 최적화: 입력, 초당 출력(IOPS) 최적화 배포는 OpenStack에서 가상 시스템으로 MYSQL 또는 MariaDB 인스턴스를 실행하는 것과 같은 클라우드 컴퓨팅 작업에 적합합니다. IOPS 최적화된 배포에는 15k RPM SAS 드라이브와 같은 고성능 스토리지 및 자주 쓰기 작업을 처리하기 위해 별도의 SSD 저널이 필요합니다. 일부 IOPS 시나리오에서는 모든 Flash 스토리지를 사용하여 IOPS 및 총 처리량을 개선합니다.

    IOPS가 최적화된 스토리지 클러스터에는 다음과 같은 속성이 있습니다.

    • IOPS당 최소 비용.
    • GB당 최대 IOPS.
    • 99번째 백분위 대기 시간 일관성.

    IOPS에 최적화된 스토리지 클러스터의 용도는 다음과 같습니다.

    • 일반적인 블록 스토리지.
    • 하드 드라이브(HDD)의 3x 복제 또는 솔리드 스테이트 드라이브(SSD)의 2x 복제.
    • OpenStack 클라우드의 MySQL.
  • 처리량 최적화: 처리량 최적화 배포는 그래픽, 오디오 및 비디오 콘텐츠와 같은 상당한 양의 데이터를 제공하는 데 적합합니다. 처리량에 최적화된 배포에는 높은 대역폭 네트워킹 하드웨어, 컨트롤러 및 하드 디스크 드라이브, 순차적 읽기 및 쓰기 기능이 필요합니다. 빠른 데이터 액세스가 요구 사항인 경우 처리량 최적화 스토리지 전략을 사용합니다. 또한 빠른 쓰기 성능이 필요한 경우 저널에 Solid State Disks (SSD)를 사용하면 쓰기 성능이 크게 향상됩니다.

    처리량 최적화 스토리지 클러스터에는 다음과 같은 속성이 있습니다.

    • MBps당 가장 낮은 비용(처리량)
    • TB당 최대 MBps
    • BTU당 최대 MBps
    • Watt당 가장 높은 MBps
    • 97%의 대기 시간 일관성

    처리량 최적화 스토리지 클러스터에 대한 사용은 다음과 같습니다.

    • 블록 또는 오브젝트 스토리지
    • 3x 복제
    • 비디오, 오디오 및 이미지를 위한 활성 성능 스토리지
    • 4K 영상 등의 스트리밍 미디어
  • 용량 최적화: 용량 최적화 배포는 상당한 양의 데이터를 가능한 한 저렴하게 저장하는 데 적합합니다. 용량 최적화 배포는 일반적으로 더 큰 가격대에 대한 성능을 거래합니다. 예를 들어 용량 최적화 배포에서는 저널링에 SSD를 사용하지 않고 속도가 느리고 비용이 적게 드는 SATA 드라이브를 사용하는 경우가 많습니다.

    비용 및 용량 최적화 스토리지 클러스터에는 다음과 같은 속성이 있습니다.

    • TB당 최소 비용
    • TB당 최소 BTU 수
    • TB당 필요한 최소 Watt

    비용 및 용량 최적화 스토리지 클러스터에 대한 사용은 다음과 같습니다.

    • 일반적으로 오브젝트 스토리지
    • 사용 가능한 용량을 극대화하기 위한 지우기 코딩
    • 오브젝트 아카이브
    • 비디오, 오디오 및 이미지 오브젝트 리포지토리

2.4. Ceph Object Gateway 고려 사항

스토리지 클러스터를 설계할 때 고려해야 할 또 다른 중요한 측면은 스토리지 클러스터가 하나의 데이터 센터 사이트에 있는지 또는 여러 데이터 센터 사이트를 대상으로 하는지를 결정하는 것입니다. 다중 사이트 스토리지 클러스터는 장기적인 정전, 경사, 허리케인, 범람 또는 기타 재해와 같은 지리적으로 분산된 페일오버 및 재해 복구의 이점을 제공합니다. 또한 다중 사이트 스토리지 클러스터에는 클라이언트 애플리케이션을 사용 가능한 가장 가까운 스토리지 클러스터로 보낼 수 있는 활성 활성 구성이 있을 수 있습니다. 이는 콘텐츠 제공 네트워크에 적합한 스토리지 전략입니다. 데이터를 가능한 한 클라이언트에 가깝게 배치하는 것이 좋습니다. 이는 스트리밍 4k 비디오와 같은 처리량 집약적인 워크로드에 중요합니다.

중요

Red Hat은 Ceph의 스토리지 풀을 생성하기 전에 영역, 영역 그룹 및 영역 이름을 식별하는 것이 좋습니다. 영역 이름을 표준 이름 지정 규칙으로 사용하는 일부 풀 이름 앞에 추가합니다.

2.4.1. 관리 데이터 스토리지

Ceph Object Gateway는 인스턴스의 영역 구성에 정의된 일련의 풀에 관리 데이터를 저장합니다. 예를 들어 후속 섹션에서 설명하는 버킷, 사용자, 사용자 할당량 및 사용량 통계는 Ceph 스토리지 클러스터의 풀에 저장됩니다. 기본적으로 Ceph Object Gateway는 다음 풀을 생성하여 기본 영역에 매핑합니다.

  • .rgw.root
  • .default.rgw.control
  • .default.rgw.meta
  • .default.rgw.log
  • .default.rgw.buckets.index
  • .default.rgw.buckets.data
  • .default.rgw.buckets.non-ec
참고

.default.rgw.buckets.index 풀은 Ceph Object Gateway에서 버킷이 생성된 후에만 생성되는 반면 .default.rgw.buckets.data 풀은 버킷에 업로드된 후 생성됩니다.

CRUSH 규칙 세트와 배치 그룹 수를 설정할 수 있도록 이러한 풀을 수동으로 생성하는 것이 좋습니다. 일반적인 구성에서 Ceph Object Gateway의 관리 데이터를 저장하는 풀은 종종 동일한 CRUSH 규칙 세트를 사용하고 관리 데이터에 10개의 풀이 있으므로 배치 그룹을 더 적게 사용합니다.

Red Hat은 .rgw.root 풀과 서비스 풀이 동일한 CRUSH 계층 구조를 사용하고 CRUSH 규칙에서 실패 도메인으로 노드를 사용하는 것이 좋습니다. Red Hat은 데이터 지속성을 위해 복제 를 사용하는 것이 좋습니다. .rgw.root 풀 및 서비스 풀에는 삭제되지 않는 것이 좋습니다.

mon_pg_warn_max_per_osd 설정은 기본적으로 풀에 너무 많은 배치 그룹을 할당하는 경우 경고합니다. 요구 사항과 하드웨어의 기능에 맞게 값을 조정할 수 있습니다. 여기서 n 은 OSD당 최대 PG 수입니다.

mon_pg_warn_max_per_osd = n
Copy to Clipboard Toggle word wrap
참고

.rgw.root 를 포함한 서비스 풀의 경우 풀 계산기당 Ceph 배치 그룹(PG)의 권장 PG 수는 Ceph OSD당 대상 PG보다 훨씬 적습니다. 또한 계산기 4단계에서 Ceph OSD의 수가 설정되어 있는지 확인합니다.

중요

가비지 컬렉션은 OMAP 대신 일반 RADOS 개체와 함께 .log 풀을 사용합니다. 향후 릴리스에서는 더 많은 기능이 .log 풀에 메타데이터를 저장합니다. 따라서 Red Hat은 .log 풀에 NVMe/SSD Ceph OSD를 사용하는 것이 좋습니다.

.rgw.root

Ceph Object Gateway 구성이 저장된 풀입니다. 여기에는 영역, 영역 그룹 및 영역이 포함됩니다. 규칙에 따라 해당 이름이 영역 이름 앞에 추가되지 않습니다.

서비스 풀

서비스 풀은 서비스 제어, 가비지 수집, 로깅, 사용자 정보 및 사용과 관련된 오브젝트를 저장합니다. 규칙에 따라 이러한 풀 이름에는 풀 이름 앞에 영역 이름이 있습니다.

  • .ZONE_NAME.rgw.control : 제어 풀입니다.
  • .ZONE_NAME.log : 로그 풀에는 create, read, update, delete와 같은 모든 버킷, 컨테이너 및 오브젝트 작업의 로그가 포함됩니다.
  • .ZONE_NAME.rgw.buckets.index : 이 풀은 버킷의 인덱스를 저장합니다.
  • .ZONE_NAME.rgw.buckets.data :이 풀은 버킷의 데이터를 저장합니다.
  • .ZONE_NAME.rgw.meta : 메타데이터 풀은 user_keys 및 기타 중요한 메타데이터를 저장합니다.
  • .ZONE_NAME.meta:users.uid : 사용자 ID 풀에는 고유한 사용자 ID 맵이 포함되어 있습니다.
  • .ZONE_NAME.meta:users.keys : 키 풀에는 각 사용자 ID에 대한 액세스 키와 시크릿 키가 포함되어 있습니다.
  • .ZONE_NAME.meta:users.email : 이메일 풀에는 사용자 ID와 연결된 이메일 주소가 포함되어 있습니다.
  • .ZONE_NAME.meta:users.swift : Swift 풀에는 사용자 ID에 대한 Swift 하위 사용자 정보가 포함되어 있습니다.

2.4.2. 인덱스 풀

Ceph Object Gateway와 함께 사용할 OSD 하드웨어를 선택하는 경우 인덱스 풀을 저장하기 위해 SSD 또는 NVMe 드라이브 중 하나 이상의 고성능 드라이브가 있는 OSD 노드를 사용할 수 있습니다. 이는 버킷에 많은 오브젝트가 포함된 경우 특히 중요합니다.

Bluestore를 실행하는 Red Hat Ceph Storage의 경우 별도의 풀이 아닌 NVMe 드라이브를 block.db 장치로 배포하는 것이 좋습니다.

Ceph Object Gateway 인덱스 데이터는 개체 맵(OMAP)에만 작성됩니다. BlueStore의 OMAP 데이터는 OSD의 block.db 장치에 있습니다. NVMe 드라이브가 HDD OSD의 block.db 장치로 작동하고 인덱스 풀이 HDD OSD에서 지원되면 인덱스 데이터는 block.db 장치에만 기록됩니다. block.db partition/lvm이 블록의 4%에 올바르게 크기가 조정되는 한, 이 구성은 BlueStore에 필요한 모든 것입니다.

참고

Red Hat은 인덱스 풀에 대한 HDD 장치를 지원하지 않습니다. 지원되는 구성에 대한 자세한 내용은 Red Hat Ceph Storage: 지원되는 구성 문서를 참조하십시오.

인덱스 항목은 약 200바이트의 데이터이며, rocksdb 에서 OMAP로 저장됩니다. 이는 간단한 양의 데이터이지만 Ceph Object Gateway를 사용하면 수십 또는 수백 만 개의 개체가 단일 버킷에 포함될 수 있습니다. 인덱스 풀을 고성능 스토리지 미디어의 CRUSH 계층 구조에 매핑함으로써 버킷에 많은 오브젝트가 포함된 경우 대기 시간이 크게 단축됩니다.

중요

프로덕션 클러스터에서 일반적인 OSD 노드에는 OSD 저널과 동일한 물리 드라이브에 별도의 파티션 또는 논리 볼륨을 사용하는 인덱스 풀 또는 block.db 장치를 저장하기 위한 최소 하나의 SSD 또는 NVMe 드라이브가 있습니다.

2.4.3. 데이터 풀

데이터 풀은 Ceph Object Gateway가 특정 스토리지 정책에 대한 오브젝트 데이터를 저장하는 위치입니다. 데이터 풀은 서비스 풀의 PG 수를 줄이는 대신 PG(배포 그룹)를 완전히 보완합니다. 복제보다 훨씬 효율적이므로 데이터 풀에 삭제 코딩을 사용하는 것이 중요하며 데이터 지속성을 유지하면서 용량 요구 사항을 크게 줄일 수 있습니다.

삭제 코딩을 사용하려면 삭제 코드 프로필을 생성합니다. 자세한 내용은 Red Hat Ceph Storage Storage Strategies GuideErasure Code Profiles 섹션을 참조하십시오.

중요

풀을 생성한 후에는 프로필을 변경할 수 없으므로 올바른 프로필을 선택하는 것이 중요합니다. 프로필을 수정하려면 다른 프로필을 사용하여 새 풀을 생성하고 이전 풀에서 새 풀로 오브젝트를 마이그레이션해야 합니다.

기본 구성은 두 개의 데이터 청크와 하나의 인코딩 청크로, 하나의 OSD만 손실될 수 있습니다. 복원력이 높은 경우 더 많은 수의 데이터 및 인코딩 청크를 고려하십시오. 예를 들어 일부 대규모 시스템은 8개의 데이터 청크와 3 인코딩 청크를 사용하므로 데이터 손실 없이 3개의 OSD가 실패할 수 있습니다.

중요

각 데이터 및 인코딩 청크는 최소한 다른 노드나 호스트에 저장됩니다. 소규모 스토리지 클러스터의 경우 더 많은 수의 데이터 및 인코딩 청크에 대해 최소 CRUSH 장애 도메인으로 rack 을 사용할 수 없습니다. 따라서 데이터 풀은 일반적으로 host와 함께 별도의 CRUSH 계층 구조를 최소 CRUSH 장애 도메인으로 사용하는 것이 일반적입니다. Red Hat은 최소 장애 도메인으로 host를 권장합니다. 코드 청크 삭제가 동일한 호스트 내의 Ceph OSD에 저장되는 경우 실패한 저널 또는 네트워크 카드와 같은 호스트 실패로 인해 데이터가 손실될 수 있습니다.

데이터 풀을 생성하려면 풀 이름, PG 및 PGP의 수, 삭제 데이터 지속성 방법, 삭제 코드 프로필, 규칙 이름을 사용하여 ceph osd pool create 명령을 실행합니다.

2.4.4. 데이터 추가 풀

data_extra_pool 은 삭제 코딩을 사용할 수 없는 데이터를 위한 것입니다. 예를 들어 다중 파트 업로드를 사용하면 여러 부분의 동영상과 같은 큰 오브젝트를 업로드할 수 있습니다. 이 부분은 삭제 코딩 없이 먼저 저장해야 합니다. 삭제 코딩은 부분적인 업로드가 아닌 전체 오브젝트에 적용됩니다.

참고

풀 계산기당 PG(배치 그룹)는 data_extra_pool 에 대한 풀당 PG 수를 더 적게 권장합니다. 그러나 PG 수는 서비스 풀과 동일한 PG 수이고 버킷 인덱스 풀과 동일합니다.

데이터 추가 풀을 생성하려면 풀 이름, PG 및 PGP 수, 복제된 데이터 지속성 방법 및 규칙 이름을 사용하여 ceph osd pool create 명령을 실행합니다. 예를 들면 다음과 같습니다.

# ceph osd pool create .us-west.rgw.buckets.non-ec 64 64 replicated rgw-service
Copy to Clipboard Toggle word wrap

2.5. CRUSH 계층 구조 개발

스토리지 관리자는 Ceph 스토리지 클러스터 및 오브젝트 게이트웨이를 배포할 때 일반적으로 Ceph Object Gateway에는 기본 영역 그룹과 영역이 있습니다. Ceph 스토리지 클러스터에는 기본 풀이 있으므로 기본 CRUSH 계층 구조와 함께 CRUSH 맵과 기본 CRUSH 규칙이 사용됩니다.

중요

기본 rbd 풀은 기본 CRUSH 규칙을 사용할 수 있습니다. Ceph 클라이언트가 클라이언트 데이터를 저장하는 데 기본 규칙 또는 계층을 삭제하지 마십시오.

프로덕션 게이트웨이는 일반적으로 게이트웨이의 사용 및 지리적 위치에 따라 이름이 지정된 사용자 지정 영역, 영역 그룹 및 영역을 사용합니다. 또한 Ceph 스토리지 클러스터에는 CRUSH 계층 구조가 여러 개의 CRUSH 맵이 있습니다.

  • 서비스 풀: 하나 이상의 CRUSH 계층 구조는 서비스 풀 및 잠재적으로 데이터를 위한 것입니다. 서비스 풀에는 .rgw.root 및 영역과 연결된 서비스 풀이 포함됩니다. 서비스 풀은 일반적으로 단일 CRUSH 계층 구조에 속하며 데이터 지속성에 복제를 사용합니다. 데이터 풀은 CRUSH 계층 구조를 사용할 수도 있지만, 일반적으로 이 풀은 데이터 지속성을 위해 삭제 코딩으로 구성됩니다.
  • 인덱스: CRUSH 계층 구조 SHOULD 는 CRUSH 계층 구조가 SSD 또는 NVMe 드라이브와 같은 고성능 미디어에 매핑되는 인덱스 풀에 사용됩니다. 버킷 인덱스는 성능 장애일 수 있습니다. Red Hat은 이 CRUSH 계층 구조에서 SSD 또는 NVMe 드라이브를 사용하는 것이 좋습니다. Ceph OSD 저널에 사용되는 SSD 또는 NVMe 드라이브에서 인덱스의 파티션을 생성합니다. 또한 인덱스는 버킷 분할을 사용하여 구성해야 합니다.
  • 배치 풀: 각 배치 대상의 배치 풀에는 버킷 인덱스, 데이터 버킷, 버킷 추가 기능이 포함됩니다. 이러한 풀은 별도의 CRUSH 계층 구조에 속할 수 있습니다. Ceph Object Gateway는 여러 스토리지 정책을 지원할 수 있으므로 스토리지 정책의 버킷 풀은 IOPS에 최적화된 IOPS, 처리량 최적화 및 용량 최적화와 같은 다양한 사용 사례를 반영하여 다양한 CRUSH 계층 구조와 연관될 수 있습니다. 버킷 인덱스 풀 SHOULD 는 자체 CRUSH 계층 구조를 사용하여 버킷 인덱스 풀을 SSD 또는 NVMe 드라이브와 같은 고성능 스토리지 미디어에 매핑합니다.

2.5.1. CRUSH 루트 생성

관리 노드의 명령줄에서 각 CRUSH 계층 구조에 대한 CRUSH 맵에 CRUSH 루트를 생성합니다. 데이터 스토리지 풀을 잠재적으로 제공할 수 있는 서비스 풀에는 CRUSH 계층 구조가 하나 이상 있어야 합니다. SSD 또는 NVMe 드라이브와 같은 고성능 스토리지 미디어에 매핑되는 버킷 인덱스 풀에 대한 CRUSH 계층 구조가 하나 이상 있어야 합니다.

CRUSH 계층 구조에 대한 자세한 내용은 Red Hat Ceph Storage Storage Strategies Guide 7CRUSH 계층 구조 섹션을 참조하십시오.

CRUSH 맵을 수동으로 편집하려면 Red Hat Ceph Storage Storage Strategies Guide 7 의 CRUSH 맵 편집 섹션을 참조하십시오.

다음 예제에서 data0, data 1data2 라는 호스트는 동일한 물리적 호스트를 가리키는 여러 CRUSH 계층 구조가 있으므로 data0-sas-ssd,data0-index 등의 확장된 논리 이름을 사용합니다.

일반적인 CRUSH 루트는 저널의 SAS 드라이브 및 SSD로 노드를 나타낼 수 있습니다. 예를 들면 다음과 같습니다.

##
# SAS-SSD ROOT DECLARATION
##

root sas-ssd {
  id -1   # do not change unnecessarily
  # weight 0.000
  alg straw
  hash 0  # rjenkins1
  item data2-sas-ssd weight 4.000
  item data1-sas-ssd weight 4.000
  item data0-sas-ssd weight 4.000
}
Copy to Clipboard Toggle word wrap

버킷 인덱스의 CRUSH 루트 SSD 또는 NVMe 드라이브와 같은 고성능 미디어를 나타냅니다. OSD 저널을 저장하는 SSD 또는 NVMe 미디어에 파티션을 생성하는 것이 좋습니다. 예를 들면 다음과 같습니다.

##
# INDEX ROOT DECLARATION
##

root index {
  id -2    # do not change unnecessarily
  # weight 0.000
  alg straw
  hash 0  # rjenkins1
  item data2-index weight 1.000
  item data1-index weight 1.000
  item data0-index weight 1.000
}
Copy to Clipboard Toggle word wrap

2.5.2. CRUSH 맵에서 논리 호스트 이름 사용

RHCS 3 이상 릴리스에서 CRUSH는 RHCS 2 및 이전 릴리스에서 지원되지 않는 스토리지 장치 "클래스"의 개념을 지원합니다. NVMe, SSD 또는 HDD와 같이 여러 스토리지 장치가 포함된 호스트 또는 노드가 있는 RHCS 3 클러스터에서는 장치 클래스가 있는 단일 CRUSH 계층 구조를 사용하여 스토리지 장치의 클래스를 구분합니다. 이렇게 하면 논리 호스트 이름을 사용할 필요가 없습니다. RHCS 2 및 이전 릴리스에서는 각 장치 클래스에 대해 여러 CRUSH 계층 구조 및 논리 호스트 이름을 사용하여 CRUSH 계층 구조의 호스트 또는 노드를 구분합니다.

RHCS 3 이상 릴리스에서 CRUSH는 RHCS 2 및 이전 릴리스에서 지원되지 않는 스토리지 장치 "class"의 개념을 지원합니다. NVMe, SSD 또는 HDD와 같이 스토리지 장치의 여러 클래스가 포함된 호스트 또는 노드가 있는 RHCS 3 클러스터에서는 장치 클래스와 함께 단일 CRUSH 계층 구조를 사용하여 스토리지 장치의 다른 클래스를 구분합니다. 이렇게 하면 논리 호스트 이름을 사용할 필요가 없습니다. RHCS 2 및 이전 릴리스에서는 각 장치 클래스에 대해 여러 CRUSH 계층 구조 및 논리 호스트 이름을 사용하여 CRUSH 계층 구조의 호스트 또는 노드를 구분합니다.

CRUSH 맵에서 호스트 이름은 고유해야 하며 한 번만 사용해야 합니다. 호스트가 여러 CRUSH 계층 구조 및 사용 사례를 제공하는 경우 CRUSH 맵은 실제 호스트 이름이 한 번만 사용되는지 확인하기 위해 논리 호스트 이름을 사용할 수 있습니다. 예를 들어 노드에는 SSD, SSD 저널이 있는 SAS 드라이브, 공동 배치된 저널이 있는 SATA 드라이브와 같은 여러 개의 드라이브 클래스가 있을 수 있습니다. RHCS 2 및 이전 릴리스에서 동일한 호스트에 대해 여러 CRUSH 계층 구조를 생성하려면 계층에서 실제 호스트 이름 대신 논리 호스트 이름을 사용해야 버킷 이름이 CRUSH 계층 구조 내에서 고유합니다. 예를 들어 호스트 이름이 data2 인 경우 CRUSH 계층 구조에서 data2-sas-ssddata2-index 와 같은 논리 이름을 사용할 수 있습니다.

host data2-sas-ssd {
  id -11   # do not change unnecessarily
  # weight 0.000
  alg straw
  hash 0  # rjenkins1
  item osd.0 weight 1.000
  item osd.1 weight 1.000
  item osd.2 weight 1.000
  item osd.3 weight 1.000
}
Copy to Clipboard Toggle word wrap

앞서 언급한 예에서 호스트 data2 는 논리 이름 data2-sas-ssd 를 사용하여 SSD의 저널이 있는 SAS 드라이브를 하나의 계층 구조로 매핑합니다. osd.0 부터 osd.3 까지 OSD ID는 높은 처리량 하드웨어 구성에서 SSD 저널을 사용하는 SAS 드라이브를 나타냅니다. 이러한 OSD ID는 다음 예의 OSD ID와 다릅니다.

다음 예에서 호스트 data2 는 논리 이름 data2-index 를 사용하여 버킷 인덱스의 SSD 드라이브를 두 번째 계층 구조에 매핑합니다. OSD ID osd.4 는 버킷 인덱스 풀에 독점적으로 사용되는 SSD 드라이브 또는 기타 고속 스토리지 미디어를 나타냅니다.

host data2-index {
  id -21   # do not change unnecessarily
  # weight 0.000
  alg straw
  hash 0  # rjenkins1
  item osd.4 weight 1.000
}
Copy to Clipboard Toggle word wrap
중요

논리 호스트 이름을 사용하는 경우 OSD 시작 스크립트가 시작 시 실제 호스트 이름을 사용하지 못하도록 다음 설정 중 하나가 Ceph 구성 파일에 있는지 확인합니다. 따라서 CRUSH 맵에서 데이터를 찾지 못합니다.

CRUSH 맵에서 앞의 예와 같이 논리 호스트 이름을 사용하는 경우 OSD 시작 스크립트가 초기화 시 실제 호스트 이름에 따라 호스트를 식별하지 못하도록 합니다. Ceph 구성 파일의 [global] 섹션에 다음 설정을 추가합니다.

osd_crush_update_on_start = false
Copy to Clipboard Toggle word wrap

논리적 호스트 이름을 정의하는 또 다른 방법은 Ceph 구성 파일의 [osd.<ID>] 섹션에 있는 각 OSD에 대한 CRUSH 맵의 위치를 정의하는 것입니다. OSD 시작 스크립트에서 정의하는 모든 위치를 재정의합니다. 앞서 언급한 예제에서 항목은 다음과 같을 수 있습니다.

[osd.0]
osd crush location = "host=data2-sas-ssd"

[osd.1]
osd crush location = "host=data2-sas-ssd"

[osd.2]
osd crush location = "host=data2-sas-ssd"

[osd.3]
osd crush location = "host=data2-sas-ssd"

[osd.4]
osd crush location = "host=data2-index"
Copy to Clipboard Toggle word wrap
중요

CRUSH 맵이 실제 호스트 이름이 아닌 논리 호스트 이름을 사용할 때 예상 방법 중 하나를 사용하지 않는 경우 Ceph Storage Cluster는 OSD가 실제 호스트 이름에 매핑된다고 가정하고, Ceph Storage Cluster는 CRUSH 맵에서 실제 호스트 이름을 찾을 수 없으며 Ceph Storage 클러스터 클라이언트는 OSD와 해당 데이터를 찾을 수 없습니다.

2.5.3. CRUSH 규칙 생성

기본 CRUSH 계층 구조와 마찬가지로 CRUSH 맵에는 기본 CRUSH 규칙도 포함되어 있습니다.

참고

기본 rbd 풀에서 이 규칙을 사용할 수 있습니다. 다른 풀에서 고객 데이터를 저장하는 데 기본 규칙을 삭제하지 마십시오.

CRUSH 규칙에 대한 자세한 내용은 Red Hat Ceph Storage 7용 Red Hat Ceph Storage Strategies GuideCRUSH 규칙 섹션을 참조하십시오. CRUSH 맵을 수동으로 편집하려면 Red Hat Ceph Storage 7용 Red Hat Ceph Storage Storage Strategies Guide 의 CRUSH 맵 편집 섹션을 참조하십시오.

각 CRUSH 계층 구조에 대해 CRUSH 규칙을 생성합니다. 다음 예제에서는 .rgw.root 를 포함하여 서비스 풀을 저장할 CRUSH 계층 구조의 규칙을 보여줍니다. 이 예제에서 루트 sas-ssd 는 기본 CRUSH 계층 구조로 사용됩니다. 이름 rgw-service 를 사용하여 기본 규칙과 구분합니다. step take sas-ssd line은 CRUSH 루트 생성 에서 생성된 sas-ssd 루트를 사용하도록 풀에 지시합니다. 여기서 하위 버킷에는 SAS 드라이브가 포함된 OSD 및 높은 처리량 하드웨어 구성 저널에 대해 SSD 또는 NVMe 드라이브와 같은 고성능 스토리지 미디어가 포함됩니다. 단계 chooseleaf유형 랙 부분은 실패 도메인입니다. 다음 예제에서는 랙입니다.

##
# SERVICE RULE DECLARATION
##

rule rgw-service {
 type replicated
 min_size 1
 max_size 10
 step take sas-ssd
 step chooseleaf firstn 0 type rack
 step emit
}
Copy to Clipboard Toggle word wrap
참고

위 예제에서 데이터가 세 번 복제되는 경우 클러스터에 비슷한 개수의 OSD 노드를 포함하는 랙이 3개 이상 있어야 합니다.

작은 정보

복제된 설정 유형은 데이터 지속성, 복제본 수 또는 삭제 코딩과 관련이 없습니다. 복제 만 지원됩니다.

다음 예제에서는 데이터 풀을 저장할 CRUSH 계층 구조의 규칙을 보여줍니다. 이 예에서 루트 sass d 는 기본 CRUSH 계층 구조로 사용됩니다. 서비스 규칙과 동일한 CRUSH 계층 구조입니다. rgw-throughput 을 사용하여 기본 규칙과 rgw-service 를 구분합니다. step take sas-ssd line은 CRUSH 루트 생성 에서 생성된 sas-ssd 루트를 사용하도록 풀에 지시합니다. 여기서 하위 버킷에는 SAS 드라이브가 포함된 OSD 및 높은 처리량 하드웨어 구성에서 SSD 또는 NVMe 드라이브와 같은 고성능 스토리지 미디어가 포함됩니다. 단계 chooseleaf유형 호스트 부분은 실패 도메인입니다. 다음 예제에서는 호스트입니다. 규칙은 동일한 CRUSH 계층 구조이지만 다른 오류 도메인을 사용합니다.

##
# THROUGHPUT RULE DECLARATION
##

rule rgw-throughput {
 type replicated
 min_size 1
 max_size 10
 step take sas-ssd
 step chooseleaf firstn 0 type host
 step emit
}
Copy to Clipboard Toggle word wrap
참고

위 예에서 풀이 기본값보다 많은 수의 데이터 및 인코딩 청크를 사용하여 삭제 코딩을 사용하는 경우 클러스터에 유사한 수의 OSD 노드가 포함된 랙이 있어야 삭제 코딩 청크를 용이하게 합니다. 소규모 클러스터의 경우 이는 실용적이지 않을 수 있으므로 위 예제는 host 를 CRUSH 장애 도메인으로 사용합니다.

다음 예제에서는 인덱스 풀을 저장할 CRUSH 계층 구조의 규칙을 보여줍니다. 이 예에서 루트 인덱스 는 기본 CRUSH 계층 구조 역할을 합니다. rgw-index 를 사용하여 rgw-servicergw-throughput 과 구별합니다. step take index 행은 CRUSH 루트 생성 에서 생성된 인덱스 루트를 사용하도록 지시합니다. 하위 버킷에는 SSD 또는 NVMe 드라이브와 같은 고성능 스토리지 미디어 또는 OSD 저널도 저장하는 SSD 또는 NVMe 드라이브의 파티션이 포함되어 있습니다. 단계 chooseleaf유형 랙 부분은 실패 도메인입니다. 다음 예제에서는 랙입니다.

##
# INDEX RULE DECLARATION
##

rule rgw-index {
 type replicated
 min_size 1
 max_size 10
 step take index
 step chooseleaf firstn 0 type rack
 step emit
}
Copy to Clipboard Toggle word wrap

2.6. Ceph Object Gateway 다중 사이트 고려 사항

Ceph Object Gateway 다중 사이트 구성에는 두 개 이상의 Red Hat Ceph Storage 클러스터와 Ceph Object Gateway 인스턴스가 각각 하나씩 필요합니다. 일반적으로 두 개의 Red Hat Ceph Storage 클러스터는 지리적으로 별도의 위치에 있지만 이와 동일한 다중 사이트 구성은 동일한 물리적 사이트에 있는 두 개의 Red Hat Ceph Storage 클러스터에서 작동할 수 있습니다.

다중 사이트 구성에는 기본 영역 그룹과 기본 영역이 필요합니다. 또한 각 영역 그룹에는 기본 영역이 필요합니다. 영역 그룹에는 하나 이상의 보조 영역이 있을 수 있습니다.

참고

CLI 또는 Red Hat Ceph Storage 대시보드를 통해 다중 사이트를 구성할 수 있습니다. 자세한 내용은 Ceph 대시보드에서 다중 사이트 오브젝트 게이트웨이 구성 을 참조하십시오.

중요

영역의 기본 영역 그룹 내의 기본 영역은 사용자, 할당량 및 버킷을 포함하여 영역 메타데이터의 기본 복사본을 저장합니다. 이 메타데이터는 보조 영역 및 보조 영역 그룹과 자동으로 동기화됩니다. radosgw-admin CLI(명령줄 인터페이스)에서 발행된 메타데이터 작업은 기본 영역 그룹의 기본 영역 내의 노드에서 실행되어야 보조 영역 그룹 및 영역에 동기화되도록 해야 합니다. 현재 보조 영역 및 영역 그룹에서 메타데이터 작업을 실행할 수 있지만 동기화 되지 않아 메타데이터의 조각화가 발생할 수 있으므로 권장되지 않습니다.

아래 다이어그램은 다중 사이트 Ceph Object Gateway 환경에서 가능한 하나와 두 개의 영역 구성을 보여줍니다.

그림 2.4. 1개의 Cryostat

그림 2.5. 두 개의 Cryostat

그림 2.6. 두 개의 Variant

2.7. 스토리지 크기 조정 고려

클러스터 설계에서 가장 중요한 요소 중 하나는 스토리지 요구 사항(크기)을 결정하는 것입니다. Ceph 스토리지는 페타바이트 이상으로 확장되도록 설계되었습니다. 다음 예제는 Ceph 스토리지 클러스터의 일반적인 크기입니다.

  • 소규모: 250 테라바이트
  • 중간: 1 페타바이트
  • Large: 2 페타바이트 이상

현재 요구 사항과 가까운 미래의 요구 사항이 포함됩니다. 게이트웨이 클라이언트가 클러스터에 새 데이터를 추가할 속도를 고려합니다. 사용 사례와 다를 수 있습니다. 예를 들어, 4k 동영상 기록 또는 의료 이미지 저장은 금융 시장 데이터와 같이 저장 집약적인 정보보다 상당한 양의 데이터를 더 빠르게 추가할 수 있습니다. 또한 복제 및 삭제 코딩과 같은 데이터 지속성 방법은 필요한 스토리지 미디어에 상당한 영향을 미칠 수 있습니다.

크기 조정에 대한 자세한 내용은 OSD 하드웨어를 선택하기 위한 Red Hat Ceph Storage 하드웨어 가이드 및 관련 링크를 참조하십시오.

2.8. 스토리지 밀도 고려

Ceph 설계의 또 다른 중요한 측면은 스토리지 밀도를 포함합니다. 일반적으로 스토리지 클러스터는 최소 10개의 노드에 걸쳐 데이터를 저장하여 복제, 백필 및 복구 시 적절한 성능을 보장합니다. 스토리지 클러스터에 노드가 10개 이상인 노드에 오류가 있는 경우 데이터의 10%만 남아 있는 노드로 이동해야 합니다. 노드 수가 크게 적으면 데이터의 백분율이 남아 있는 노드로 이동해야 합니다. 또한, 스토리지 클러스터가 데이터를 쓸 수 있도록 노드 실패를 수용하려면 full_rationear_full_ratio 옵션을 설정해야 합니다. 따라서 스토리지 밀도를 고려해야 합니다. 높은 스토리지 밀도가 반드시 좋은 것은 아닙니다.

스토리지 밀도가 높은 더 많은 노드를 선호하는 또 다른 요소는 삭제 코딩입니다. 삭제 코딩을 사용하여 오브젝트를 작성하고 노드를 최소 CRUSH 장애 도메인으로 사용할 때 Ceph 스토리지 클러스터에는 데이터 및 코딩 청크만큼 많은 노드가 필요합니다. 예를 들어 k=8 을 사용하는 클러스터에는 각 데이터 또는 코딩 청크가 별도의 노드에 저장되도록 k=8개 이상의 노드가 11개 이상 있어야 합니다.

핫스케이핑도 중요한 고려 사항입니다. 대부분의 최신 서버는 드라이브 핫스케이핑을 지원합니다. 그러나 일부 하드웨어 구성에서는 드라이브를 교체하려면 두 개 이상의 드라이브를 제거해야 합니다. Red Hat은 실패한 디스크를 스와핑할 때 필요한 것보다 더 많은 Ceph OSD를 가져올 수 있으므로 이러한 구성을 방지하는 것이 좋습니다.

2.9. Ceph Monitor 노드의 디스크 고려

Ceph Monitor는 rocksdb 를 사용하며 이는 동기 쓰기 대기 시간에 민감합니다. Red Hat은 Ceph Monitor 데이터를 저장하기 위해 SSD 디스크를 사용하는 것이 좋습니다. 순차적 쓰기 및 처리량 특성이 충분한 SSD 디스크를 선택합니다.

2.10. 백필 및 복구 설정 조정

I/O는 백필링 및 복구 작업 둘 다에 부정적인 영향을 미치므로 성능이 저하되고 최종 사용자가 불만족합니다. 클러스터 확장 또는 복구 중에 I/O 수요를 수용하려면 Ceph 구성 파일에서 다음 옵션과 값을 설정합니다.

[osd]
osd_max_backfills = 1
osd_recovery_max_active = 1
osd_recovery_op_priority = 1
Copy to Clipboard Toggle word wrap

2.11. 클러스터 맵 크기 조정

기본적으로 ceph-osd 데몬은 500 이전 osdmaps를 캐시합니다. 중복 제거에도 불구하고 맵은 데몬당 많은 메모리를 사용할 수 있습니다. Ceph 구성에서 캐시 크기를 조정하면 메모리 사용량을 크게 줄일 수 있습니다. 예를 들면 다음과 같습니다.

[ceph: root@host01 /]# ceph config set global osd_map_message_max 10
[ceph: root@host01 /]# ceph config set osd osd_map_cache_size 20
[ceph: root@host01 /]# ceph config set osd osd_map_share_max_epochs 10
[ceph: root@host01 /]# ceph config set osd osd_pg_epoch_persisted_max_stale 10
Copy to Clipboard Toggle word wrap

Red Hat Ceph Storage 버전 3 이상의 경우 ceph-manager 데몬이 PG 쿼리를 처리하므로 클러스터 맵은 성능에 영향을 미치지 않아야 합니다.

2.12. 스크럽 조정

기본적으로 Ceph는 매주 간단한 스크럽과 깊은 스크럽을 수행합니다. Light scrubbing은 오브젝트 크기와 체크섬을 확인하여 PG가 동일한 오브젝트 데이터를 저장하고 있는지 확인합니다. 시간이 지남에 따라 디스크 섹터는 오브젝트 크기 및 체크섬에 관계없이 잘못된 상태가 될 수 있습니다. 딥 스크러빙은 실제 콘텐츠가 동일한지 확인하기 위해 해당 복제본과 함께 오브젝트의 콘텐츠를 확인합니다. 이와 관련하여 딥러빙은 fsck 방식으로 데이터 무결성을 보장하지만 절차는 클러스터에 I/O 페널티를 부과합니다. 간단한 스크러빙도 I/O에 영향을 미칠 수 있습니다.

기본 설정을 사용하면 Ceph OSD에서 최대 작동 시간 또는 로드가 많은 기간과 같은 inopportune 시간에 스크럽을 시작할 수 있습니다. 최종 사용자는 작업이 최종 사용자 작업과 충돌할 때 대기 시간 및 성능이 저하될 수 있습니다.

최종 사용자가 성능이 저하되는 것을 방지하기 위해 Ceph는 더 낮은 로드를 사용하거나 사용량이 적은 기간으로 스크럽을 제한할 수 있는 여러 가지 스크럽 설정을 제공합니다. 자세한 내용은 Red Hat Ceph Storage 구성 가이드의 OSD Scrubbing the OSD 섹션을 참조하십시오.

클러스터에서 낮에 높은 로드가 발생하고 야간에 지연 시간이 짧은 경우 야간 시간으로 스크럽을 제한하는 것이 좋습니다. 예를 들면 다음과 같습니다.

[osd]
osd_scrub_begin_hour = 23   #23:01H, or 10:01PM.
osd_scrub_end_hour = 6      #06:01H or 6:01AM.
Copy to Clipboard Toggle word wrap

시간 제약 조건이 스크럽 스케줄을 결정하는 효과적인 방법이 아닌 경우 osd_scrub_load_threshold 를 사용하는 것이 좋습니다. 기본값은 0.5 이지만 낮은 로드 조건을 위해 수정할 수 있습니다. 예를 들면 다음과 같습니다.

[osd]
osd_scrub_load_threshold = 0.25
Copy to Clipboard Toggle word wrap

2.13. objecter_inflight_ops증가

확장성을 개선하기 위해 허용되는 의도하지 않은 I/O 요청의 최대 수를 지정하는 objecter_inflight_ops 매개변수 값을 편집할 수 있습니다. 이 매개변수는 클라이언트 트래픽 제어에 사용됩니다.

objecter_inflight_ops = 24576
Copy to Clipboard Toggle word wrap

2.14. Increase rgw_thread_pool_size

확장성을 개선하기 위해 스레드 풀의 크기인 rgw_thread_pool_size 매개변수 값을 편집할 수 있습니다. 새로운 Fence frontend 는 새로운 연결을 수락하기 위해 스레드 풀 크기에 의해 제한되지 않습니다.

rgw_thread_pool_size = 512
Copy to Clipboard Toggle word wrap

2.15. Ceph를 실행할 때 Linux 커널 튜닝 고려 사항

프로덕션 Red Hat Ceph Storage 클러스터는 일반적으로 운영 체제 조정, 특히 제한 및 메모리 할당의 이점을 제공합니다. 스토리지 클러스터 내의 모든 호스트에 대해 조정이 설정되어 있는지 확인합니다. 추가 지침을 요구하는 Red Hat 지원 케이스를 열 수도 있습니다.

파일 디스크립터 증가

Ceph Object Gateway는 파일 디스크립터가 부족하면 중지될 수 있습니다. Ceph Object Gateway 호스트에서 /etc/security/limits.conf 파일을 수정하여 Ceph Object Gateway의 파일 디스크립터를 늘릴 수 있습니다.

ceph       soft    nofile     unlimited
Copy to Clipboard Toggle word wrap

대규모 스토리지 클러스터의 ulimit 값 조정

대규모 스토리지 클러스터에서 Ceph 관리 명령을 실행하는 경우(예: 1024 Ceph OSD 이상) 다음 내용으로 관리 명령을 실행하는 각 호스트에 /etc/security/limits.d/50-ceph.conf 파일을 만듭니다.

USER_NAME       soft    nproc     unlimited
Copy to Clipboard Toggle word wrap

USER_NAME을 Ceph 관리 명령을 실행하는 루트가 아닌 사용자 계정의 이름으로 바꿉니다.

참고

루트 사용자의 ulimit 값은 Red Hat Enterprise Linux에서 기본적으로 ulimit으로 이미 설정되어 있습니다.

3장. Deployment

스토리지 관리자는 명령줄 인터페이스 또는 서비스 사양과 함께 Ceph Orchestrator를 사용하여 Ceph Object Gateway를 배포할 수 있습니다. 다중 사이트 Ceph Object Gateway를 구성하고 Ceph Orchestrator를 사용하여 Ceph Object Gateway를 제거할 수도 있습니다.

cephadm 명령은 Ceph Object Gateway를 다중 사이트 배포에서 단일 클러스터 배포 또는 특정 영역 및 영역을 관리하는 데몬 컬렉션으로 배포합니다.

참고

cephadm 에서는 ceph.conf 파일 또는 명령줄 옵션 대신 Ceph Monitor 구성 데이터베이스를 사용하여 Ceph Object Gateway 데몬이 구성됩니다. 구성이 client.rgw 섹션에 없는 경우 Ceph Object Gateway 데몬은 기본 설정으로 시작하여 포트 80 에 바인딩합니다.

이 섹션에서는 다음 관리 작업에 대해 설명합니다.

사전 요구 사항

  • 실행 중이고 정상적인 Red Hat Ceph Storage 클러스터입니다.
  • 모든 노드에 대한 루트 수준 액세스.
  • 스토리지 클러스터에서 사용 가능한 노드
  • 모든 관리자, 모니터 및 OSD는 스토리지 클러스터에 배포됩니다.

3.1. 명령줄 인터페이스를 사용하여 Ceph Object Gateway 배포

Ceph Orchestrator를 사용하여 명령줄 인터페이스에서 ceph orch 명령을 사용하여 Ceph Object Gateway를 배포할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 모든 노드에 대한 루트 수준 액세스.
  • 호스트가 클러스터에 추가됩니다.
  • 모든 manager, monitor 및 OSD 데몬이 배포됩니다.

프로세스

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. Ceph 개체 게이트웨이 데몬은 다음과 같은 세 가지 방법으로 배포할 수 있습니다.

방법 1

  • 영역, 영역 그룹, 영역을 생성한 다음 호스트 이름으로 배치 사양을 사용합니다.

    1. 영역을 생성합니다.

      구문

      radosgw-admin realm create --rgw-realm=REALM_NAME --default
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default
      Copy to Clipboard Toggle word wrap

    2. 영역 그룹을 생성합니다.

      구문

      radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME  --master --default
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=default  --master --default
      Copy to Clipboard Toggle word wrap

    3. 영역을 생성합니다.

      구문

      radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME --master --default
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=test_zone --master --default
      Copy to Clipboard Toggle word wrap

    4. 변경 사항을 커밋합니다.

      구문

      radosgw-admin period update --rgw-realm=REALM_NAME --commit
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin period update --rgw-realm=test_realm --commit
      Copy to Clipboard Toggle word wrap

    5. ceph orch apply 명령을 실행합니다.

      구문

      ceph orch apply rgw NAME [--realm=REALM_NAME] [--zone=ZONE_NAME] [--zonegroup=ZONE_GROUP_NAME] --placement="NUMBER_OF_DAEMONS [HOST_NAME_1 HOST_NAME_2]"
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch apply rgw test --realm=test_realm --zone=test_zone --zonegroup=default --placement="2 host01 host02"
      Copy to Clipboard Toggle word wrap

방법 2

  • 임의의 서비스 이름을 사용하여 단일 클러스터 배포를 위해 두 개의 Ceph Object Gateway 데몬을 배포합니다.

    구문

    ceph orch apply rgw SERVICE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch apply rgw foo
    Copy to Clipboard Toggle word wrap

방법 3

  • 레이블이 지정된 호스트 세트에서 임의의 서비스 이름을 사용합니다.

    구문

    ceph orch host label add HOST_NAME_1 LABEL_NAME
    ceph orch host label add HOSTNAME_2 LABEL_NAME
    ceph orch apply rgw SERVICE_NAME --placement="label:LABEL_NAME count-per-host:NUMBER_OF_DAEMONS" --port=8000
    Copy to Clipboard Toggle word wrap

    참고

    NUMBER_OF_DAEMONS 는 각 호스트에 배포된 Ceph 개체 게이트웨이 수를 제어합니다. 추가 비용이 발생하지 않고 최고 성능을 달성하려면 이 값을 2로 설정합니다.

    예제

    [ceph: root@host01 /]# ceph orch host label add host01 rgw  # the 'rgw' label can be anything
    [ceph: root@host01 /]# ceph orch host label add host02 rgw
    [ceph: root@host01 /]# ceph orch apply rgw foo --placement="label:rgw count-per-host:2" --port=8000
    Copy to Clipboard Toggle word wrap

검증

  • 서비스를 나열합니다.

    예제

    [ceph: root@host01 /]# ceph orch ls
    Copy to Clipboard Toggle word wrap

  • 호스트, 데몬 및 프로세스를 나열합니다.

    구문

    ceph orch ps --daemon_type=DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch ps --daemon_type=rgw
    Copy to Clipboard Toggle word wrap

3.2. 서비스 사양을 사용하여 Ceph Object Gateway 배포

기본 또는 사용자 지정 영역, 영역 및 영역 그룹과 함께 서비스 사양을 사용하여 Ceph Object Gateway를 배포할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 부트 스트랩된 호스트에 대한 루트 수준 액세스.
  • 호스트가 클러스터에 추가됩니다.
  • 모든 manager, monitor, OSD 데몬이 배포됩니다.

프로세스

  1. root 사용자로 사양 파일을 생성합니다.

    예제

    [root@host01 ~]# touch radosgw.yml
    Copy to Clipboard Toggle word wrap

  2. Ceph Object 게이트웨이 종료/다시 시작 중에 rgw_graceful_stop 를 'true'로 설정하여 rgw_exit_timeout_secs 매개변수에 정의된 기간 동안 rgw_graceful_stop 을 'true'로 설정하도록 S3 요청을 구성합니다.

    구문

    ceph config set client.rgw rgw_graceful_stop true
    
    ceph config set client.rgw rgw_exit_timeout_secs 120
    Copy to Clipboard Toggle word wrap

    참고

    컨테이너화된 배포의 경우 ceph orch stop/restart 명령으로 예상대로 작동하려면 --stop-timeout=120 (또는 rgw_exit_timeout_secs 구성 값)의 추가 extra_container_agrs 구성도 필요합니다.

    [root@host1 ~]$ cat rgw_spec.yaml
    service_type: rgw
    service_id: foo
    placement:
      count_per_host: 1
      hosts:
        - rgw_node
    spec:
      rgw_frontend_port: 8081
    extra_container_args:
      - "--stop-timeout=120"
    Copy to Clipboard Toggle word wrap
  3. 기본 영역, 영역, 영역 그룹에 대한 다음 세부 정보를 포함하도록 radosgw.yml 파일을 편집합니다.

    구문

    service_type: rgw
    service_id: REALM_NAME.ZONE_NAME
    placement:
      hosts:
      - HOST_NAME_1
      - HOST_NAME_2
      count_per_host: NUMBER_OF_DAEMONS
    spec:
      rgw_realm: REALM_NAME
      rgw_zone: ZONE_NAME
      rgw_zonegroup: ZONE_GROUP_NAME
      rgw_frontend_port: FRONT_END_PORT
    networks:
      -  NETWORK_CIDR # Ceph Object Gateway service binds to a specific network
    Copy to Clipboard Toggle word wrap

    참고

    NUMBER_OF_DAEMONS 는 각 호스트에 배포된 Ceph Object Gateway 수를 제어합니다. 추가 비용이 발생하지 않고 최고 성능을 달성하려면 이 값을 2로 설정합니다.

    예제

    service_type: rgw
    service_id: default
    placement:
      hosts:
      - host01
      - host02
      - host03
      count_per_host: 2
    spec:
      rgw_realm: default
      rgw_zone: default
      rgw_zonegroup: default
      rgw_frontend_port: 1234
    networks:
      - 192.169.142.0/24
    Copy to Clipboard Toggle word wrap

  4. 선택 사항: 사용자 지정 영역, 영역 및 영역 그룹의 경우 리소스를 생성한 다음 radosgw.yml 파일을 생성합니다.

    1. 사용자 지정 영역, 영역 및 영역 그룹을 생성합니다.

      예제

      [root@host01 ~]# radosgw-admin realm create --rgw-realm=test_realm --default
      [root@host01 ~]# radosgw-admin zonegroup create --rgw-zonegroup=test_zonegroup --default
      [root@host01 ~]# radosgw-admin zone create --rgw-zonegroup=test_zonegroup --rgw-zone=test_zone --default
      [root@host01 ~]# radosgw-admin period update --rgw-realm=test_realm --commit
      Copy to Clipboard Toggle word wrap

    2. 다음 세부 정보를 사용하여 radosgw.yml 파일을 생성합니다.

      예제

      service_type: rgw
      service_id: test_realm.test_zone
      placement:
        hosts:
        - host01
        - host02
        - host03
        count_per_host: 2
      spec:
        rgw_realm: test_realm
        rgw_zone: test_zone
        rgw_zonegroup: test_zonegroup
        rgw_frontend_port: 1234
      networks:
        - 192.169.142.0/24
      Copy to Clipboard Toggle word wrap

  5. radosgw.yml 파일을 컨테이너의 디렉터리에 마운트합니다.

    예제

    [root@host01 ~]# cephadm shell --mount radosgw.yml:/var/lib/ceph/radosgw/radosgw.yml
    Copy to Clipboard Toggle word wrap

    참고

    쉘을 종료할 때마다 데몬을 배포하기 전에 컨테이너에 파일을 마운트해야 합니다.

  6. 서비스 사양을 사용하여 Ceph Object Gateway를 배포합니다.

    구문

    ceph orch apply -i FILE_NAME.yml
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch apply -i /var/lib/ceph/radosgw/radosgw.yml
    Copy to Clipboard Toggle word wrap

검증

  • 서비스를 나열합니다.

    예제

    [ceph: root@host01 /]# ceph orch ls
    Copy to Clipboard Toggle word wrap

  • 호스트, 데몬 및 프로세스를 나열합니다.

    구문

    ceph orch ps --daemon_type=DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch ps --daemon_type=rgw
    Copy to Clipboard Toggle word wrap

3.3. Ceph Orchestrator를 사용하여 다중 사이트 Ceph Object Gateway 배포

Ceph Orchestrator는 Ceph Object Gateway에 대한 다중 사이트 구성 옵션을 지원합니다.

각 오브젝트 게이트웨이가 활성-활성 영역 구성에서 작동하도록 구성하여 기본이 아닌 영역에 쓰기를 허용할 수 있습니다. 다중 사이트 구성은 영역이라는 컨테이너 내에 저장됩니다.

영역은 영역 그룹, 영역 및 기간을 저장합니다. rgw 데몬은 별도의 동기화 에이전트가 필요하지 않은 동기화를 처리하므로 active-active 구성으로 작동합니다.

CLI(명령줄 인터페이스)를 사용하여 다중 사이트 영역을 배포할 수도 있습니다.

참고

다음 구성에서는 두 개 이상의 Red Hat Ceph Storage 클러스터가 지리적으로 별도의 위치에 있다고 가정합니다. 그러나 구성은 동일한 사이트에서도 작동합니다.

사전 요구 사항

  • 두 개 이상의 실행 중인 Red Hat Ceph Storage 클러스터
  • 각 Red Hat Ceph Storage 클러스터에 하나씩 두 개 이상의 Ceph Object Gateway 인스턴스.
  • 모든 노드에 대한 루트 수준 액세스.
  • 노드 또는 컨테이너가 스토리지 클러스터에 추가됩니다.
  • 모든 Ceph Manager, Monitor 및 OSD 데몬이 배포됩니다.

프로세스

  1. cephadm 쉘에서 기본 영역을 구성합니다.

    1. 영역을 생성합니다.

      구문

      radosgw-admin realm create --rgw-realm=REALM_NAME --default
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm --default
      Copy to Clipboard Toggle word wrap

      스토리지 클러스터에 단일 영역이 있는 경우 --default 플래그를 지정합니다.

    2. 기본 영역 그룹을 생성합니다.

      구문

      radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --master --default
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=us --endpoints=http://rgw1:80 --master --default
      Copy to Clipboard Toggle word wrap

    3. 기본 영역을 생성합니다.

      구문

      radosgw-admin zone create --rgw-zonegroup=PRIMARY_ZONE_GROUP_NAME --rgw-zone=PRIMARY_ZONE_NAME --endpoints=http://RGW_PRIMARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-1 --endpoints=http://rgw1:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
      Copy to Clipboard Toggle word wrap

    4. 선택 사항: 기본 영역, 영역 그룹 및 관련 풀을 삭제합니다.

      중요

      데이터를 저장하기 위해 기본 영역 및 영역 그룹을 사용하는 경우 기본 영역 및 해당 풀을 삭제하지 마십시오. 또한 기본 영역 그룹을 제거하면 시스템 사용자가 삭제됩니다.

      기본 영역 및 zonegroup에서 이전 데이터에 액세스하려면 radosgw-admin 명령에서 --rgw-zone default--rgw-zonegroup 기본값 을 사용합니다.

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup delete --rgw-zonegroup=default
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.log default.rgw.log --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.meta default.rgw.meta --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.control default.rgw.control --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
      [ceph: root@host01 /]# ceph osd pool rm default.rgw.gc default.rgw.gc --yes-i-really-really-mean-it
      Copy to Clipboard Toggle word wrap

    5. 시스템 사용자를 생성합니다.

      구문

      radosgw-admin user create --uid=USER_NAME --display-name="USER_NAME" --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY --system
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin user create --uid=zone.user --display-name="Zone user" --system
      Copy to Clipboard Toggle word wrap

      access_keysecret_key 를 기록합니다.

    6. 기본 영역에 액세스 키와 시스템 키를 추가합니다.

      구문

      radosgw-admin zone modify --rgw-zone=PRIMARY_ZONE_NAME --access-key=ACCESS_KEY --secret=SECRET_KEY
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=us-east-1 --access-key=NE48APYCAODEPLKBCZVQ--secret=u24GHQWRE3yxxNBnFBzjM4jn14mFIckQ4EKL6LoW
      Copy to Clipboard Toggle word wrap

    7. 변경 사항을 커밋합니다.

      구문

      radosgw-admin period update --commit
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin period update --commit
      Copy to Clipboard Toggle word wrap

    8. cephadm 쉘 외부에서 스토리지 클러스터 및 프로세스의 FSID 를 가져옵니다.

      예제

      [root@host01 ~]#  systemctl list-units | grep ceph
      Copy to Clipboard Toggle word wrap

    9. Ceph Object Gateway 데몬을 시작합니다.

      구문

      systemctl start ceph-FSID@DAEMON_NAME
      systemctl enable ceph-FSID@DAEMON_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service
      [root@host01 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-1.host01.ahdtsw.service
      Copy to Clipboard Toggle word wrap

  2. Cephadm 쉘에서 보조 영역을 구성합니다.

    1. 호스트에서 기본 영역 구성을 가져옵니다.

      구문

      radosgw-admin realm pull --rgw-realm=PRIMARY_REALM --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY --default
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# radosgw-admin realm pull --rgw-realm=test_realm --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ --default
      Copy to Clipboard Toggle word wrap

    2. 호스트에서 기본 기간 구성을 가져옵니다.

      구문

      radosgw-admin period pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# radosgw-admin period pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
      Copy to Clipboard Toggle word wrap

    3. 보조 영역을 구성합니다.

      구문

      radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME \
                   --rgw-zone=SECONDARY_ZONE_NAME --endpoints=http://RGW_SECONDARY_HOSTNAME:RGW_PRIMARY_PORT_NUMBER_1 \
                   --access-key=SYSTEM_ACCESS_KEY --secret=SYSTEM_SECRET_KEY \
                   --endpoints=http://FQDN:80 \
                   [--read-only]
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-2 --endpoints=http://rgw2:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
      Copy to Clipboard Toggle word wrap

    4. 선택 사항: 기본 영역을 삭제합니다.

      중요

      데이터를 저장하기 위해 기본 영역 및 영역 그룹을 사용하는 경우 기본 영역 및 해당 풀을 삭제하지 마십시오.

      기본 영역 및 zonegroup에서 이전 데이터에 액세스하려면 radosgw-admin 명령에서 --rgw-zone default--rgw-zonegroup 기본값 을 사용합니다.

      예제

      [ceph: root@host04 /]# radosgw-admin zone rm --rgw-zone=default
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.log default.rgw.log --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.meta default.rgw.meta --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.control default.rgw.control --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
      [ceph: root@host04 /]# ceph osd pool rm default.rgw.gc default.rgw.gc --yes-i-really-really-mean-it
      Copy to Clipboard Toggle word wrap

    5. Ceph 구성 데이터베이스를 업데이트합니다.

      구문

      ceph config set SERVICE_NAME rgw_zone SECONDARY_ZONE_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# ceph config set rgw rgw_zone us-east-2
      Copy to Clipboard Toggle word wrap

    6. 변경 사항을 커밋합니다.

      구문

      radosgw-admin period update --commit
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# radosgw-admin period update --commit
      Copy to Clipboard Toggle word wrap

    7. Cephadm 쉘 외부에서 스토리지 클러스터 및 프로세스의 FSID를 가져옵니다.

      예제

      [root@host04 ~]#  systemctl list-units | grep ceph
      Copy to Clipboard Toggle word wrap

    8. Ceph Object Gateway 데몬을 시작합니다.

      구문

      systemctl start ceph-FSID@DAEMON_NAME
      systemctl enable ceph-FSID@DAEMON_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [root@host04 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
      [root@host04 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
      Copy to Clipboard Toggle word wrap

  3. 선택 사항: 배치 사양을 사용하여 다중 사이트 Ceph Object Gateway를 배포합니다.

    구문

    ceph orch apply rgw NAME --realm=REALM_NAME --zone=PRIMARY_ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# ceph orch apply rgw east --realm=test_realm --zone=us-east-1 --placement="2 host01 host02"
    Copy to Clipboard Toggle word wrap

검증

  • 동기화 상태를 확인하여 배포를 확인합니다.

    예제

    [ceph: root@host04 /]# radosgw-admin sync status
    Copy to Clipboard Toggle word wrap

3.4. Ceph Orchestrator를 사용하여 Ceph Object Gateway 제거

ceph orch rm 명령을 사용하여 Ceph 개체 게이트웨이 데몬을 제거할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 모든 노드에 대한 루트 수준 액세스.
  • 호스트가 클러스터에 추가됩니다.
  • 호스트에 배포된 하나 이상의 Ceph 오브젝트 게이트웨이 데몬입니다.

프로세스

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 서비스를 나열합니다.

    예제

    [ceph: root@host01 /]# ceph orch ls
    Copy to Clipboard Toggle word wrap

  3. 서비스를 제거합니다.

    구문

    ceph orch rm SERVICE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch rm rgw.test_realm.test_zone_bb
    Copy to Clipboard Toggle word wrap

검증

  • 호스트, 데몬 및 프로세스를 나열합니다.

    구문

    ceph orch ps
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch ps
    Copy to Clipboard Toggle word wrap

3.5. Ceph Manager rgw 모듈 사용

스토리지 관리자는 rgw 모듈을 사용하여 Ceph Object Gateway, 단일 사이트 및 다중 사이트를 배포할 수 있습니다. Ceph Object 영역, zonegroup 및 다양한 관련 엔티티를 부트 스트랩하고 구성하는 데 도움이 됩니다.

새로 생성된 또는 기존 영역에 사용 가능한 토큰을 사용할 수 있습니다. 이 토큰은 영역 정보 및 해당 마스터 영역 끝점 인증 데이터를 캡슐화하는 base64 문자열입니다.

다중 사이트 구성에서 이러한 토큰을 사용하여 rgw zone create 명령을 사용하여 기본 클러스터의 마스터 영역과 동기화하는 다른 클러스터에 보조 영역을 생성하는 데 사용할 수 있습니다.

3.5.1. rgw 모듈을 사용하여 Ceph Object Gateway 배포

Ceph Object Gateway 영역을 부트 스트랩하면 새 영역 엔티티, 새 영역 그룹, 새 영역이 생성됩니다. rgw 모듈은 해당 Ceph Object Gateway 데몬을 생성하고 배포하도록 오케스트레이터에 지시합니다.

ceph mgr 모듈 enable rgw 명령을 사용하여 rgw 모듈을 활성화합니다. rgw 모듈을 활성화한 후 명령줄에서 인수를 전달하거나 yaml 사양 파일을 사용하여 영역을 부트스트랩합니다.

사전 요구 사항

  • 하나 이상의 OSD가 배포된 실행 중인 Red Hat Ceph Storage 클러스터

프로세스

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 'rgw'module을 활성화합니다.

    예제

    [ceph: root@host01 /]# ceph mgr module enable rgw
    Copy to Clipboard Toggle word wrap

  3. 명령줄 또는 yaml 사양 파일을 사용하여 Ceph Object Gateway 영역을 부트스트랩합니다.

    • 옵션 1: 명령줄 인터페이스를 사용합니다.

      구문

      ceph rgw realm bootstrap [--realm name REALM_NAME] [--zonegroup-name ZONEGROUP_NAME] [--zone-name ZONE_NAME] [--port PORT_NUMBER] [--placement HOSTNAME] [--start-radosgw]
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph rgw realm bootstrap --realm-name myrealm --zonegroup-name myzonegroup --zone-name myzone --port 5500 --placement="host01 host02" --start-radosgw
      Realm(s) created correctly. Please, use 'ceph rgw realm tokens' to get the token.
      Copy to Clipboard Toggle word wrap

    • 옵션 2: yaml 사양 파일을 사용합니다.

      1. root 사용자로 yaml 파일을 생성합니다.

        구문

        rgw_realm: REALM_NAME
        rgw_zonegroup: ZONEGROUP_NAME
        rgw_zone: ZONE_NAME
        placement:
          hosts:
           - _HOSTNAME_1_
           - _HOSTNAME_2_
        Copy to Clipboard Toggle word wrap

        예제

        [root@host01 ~]# cat rgw.yaml
        
        rgw_realm: myrealm
        rgw_zonegroup: myzonegroup
        rgw_zone: myzone
        placement:
          hosts:
           - host01
           - host02
        Copy to Clipboard Toggle word wrap

      2. 선택 사항: 영역 부트스트랩 중에 hostnames 매개변수를 zonegroup에 추가할 수 있습니다.

        구문

        service_type: rgw
        placement:
          hosts:
          - _host1_
          - _host2_
        spec:
          rgw_realm: my_realm
          rgw_zonegroup: my_zonegroup
          rgw_zone: my_zone
          zonegroup_hostnames:
          - _hostname1_
          - _hostname2_
        Copy to Clipboard Toggle word wrap

        예제

        service_type: rgw
        placement:
          hosts:
          - _host1_
          - _host2_
        spec:
          rgw_realm: my_realm
          rgw_zonegroup: my_zonegroup
          rgw_zone: my_zone
          zonegroup_hostnames:
          - foo
          - bar
        Copy to Clipboard Toggle word wrap

      3. YAML 파일을 컨테이너의 디렉터리에 마운트합니다.

        예제

        [root@host01 ~]# cephadm shell --mount rgw.yaml:/var/lib/ceph/rgw/rgw.yaml
        Copy to Clipboard Toggle word wrap

      4. 영역을 부트스트랩합니다.

        예제

        [ceph: root@host01 /]# ceph rgw realm bootstrap -i /var/lib/ceph/rgw/rgw.yaml
        Copy to Clipboard Toggle word wrap

        참고

        rgw 모듈에서 사용하는 사양 파일은 오케스트레이터에서 사용하는 형식과 동일합니다. 따라서 SSL 인증서와 같은 고급 구성 기능을 포함하여 지원되는 모든 오케스트레이션 Ceph Object Gateway 매개변수를 제공할 수 있습니다.

  4. 사용 가능한 토큰을 나열합니다.

    예제

    [ceph: root@host01 /]# ceph rgw realm tokens | jq
    
    [
      {
        "realm": "myrealm",
        "token": "ewogICAgInJlYWxtX25hbWUiOiAibXlyZWFsbSIsCiAgICAicmVhbG1faWQiOiAiZDA3YzAwZWYtOTA0MS00ZjZlLTg4MDQtN2Q0MDI0MDU1NmFlIiwKICAgICJlbmRwb2ludCI6ICJodHRwOi8vdm0tMDA6NDMyMSIsCiAgICAiYWNjZXNzX2tleSI6ICI5NTY1VFZSMVFWTExFRzdVNFIxRCIsCiAgICAic2VjcmV0IjogImQ3b0FJQXZrNEdYeXpyd3Q2QVZ6bEZNQmNnRG53RVdMMHFDenE3cjUiCn1="
      }
    ]
    Copy to Clipboard Toggle word wrap

    참고

    Ceph Object Gateway 데몬이 배포되기 전에 위의 명령을 실행하면 엔드포인트가 없으므로 토큰이 없다는 메시지가 표시됩니다.

검증

  • 오브젝트 게이트웨이 배포를 확인합니다.

    예제

    [ceph: root@host01 /]# ceph orch list --daemon-type=rgw
    NAME                                                                HOST                                    PORTS  STATUS          REFRESHED   AGE  MEM USE  MEM LIM  VERSION          IMAGE ID      CONTAINER ID
    rgw.myrealm.myzonegroup.ceph-saya-6-osd-host01.eburst  ceph-saya-6-osd-host01  *:80   running (111m)     9m ago  111m    82.3M        -  17.2.6-22.el9cp  2d5b080de0b0  2f3eaca7e88e
    Copy to Clipboard Toggle word wrap

  • 영역 부트스트랩을 통해 호스트 이름이 추가되었는지 확인합니다.

    구문

    radosgw-admin zonegroup get --rgw-zonegroup _zone_group_name_
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup get --rgw-zonegroup my_zonegroup
    
    {
        "id": "02a175e2-7f23-4882-8651-6fbb15d25046",
        "name": "my_zonegroup_ck",
        "api_name": "my_zonegroup_ck",
        "is_master": true,
        "endpoints": [
            "http://vm-00:80"
        ],
        "hostnames": [
            "foo"
            "bar"
        ],
        "hostnames_s3website": [],
        "master_zone": "f42fea84-a89e-4995-996e-61b7223fb0b0",
        "zones": [
            {
                "id": "f42fea84-a89e-4995-996e-61b7223fb0b0",
                "name": "my_zone_ck",
                "endpoints": [
                    "http://vm-00:80"
                ],
                "log_meta": false,
                "log_data": false,
                "bucket_index_max_shards": 11,
                "read_only": false,
                "tier_type": "",
                "sync_from_all": true,
                "sync_from": [],
                "redirect_zone": "",
                "supported_features": [
                    "compress-encrypted",
                    "resharding"
                ]
            }
        ],
        "placement_targets": [
            {
                "name": "default-placement",
                "tags": [],
                "storage_classes": [
                    "STANDARD"
                ]
            }
        ],
        "default_placement": "default-placement",
        "realm_id": "439e9c37-4ddc-43a3-99e9-ea1f3825bb51",
        "sync_policy": {
            "groups": []
        },
        "enabled_features": [
            "resharding"
        ]
    }
    Copy to Clipboard Toggle word wrap

    Ceph Object Gateway 사양 파일의 zonegroup_hostnames 에 지정된 호스트 이름 목록은 zonegroups의 hostnames 섹션을 참조하십시오.

3.5.2. rgw 모듈을 사용하여 Ceph Object Gateway 다중 사이트 배포

Ceph Object Gateway 영역을 부트 스트랩하면 새 영역 엔티티, 새 영역 그룹, 새 영역이 생성됩니다. 다중 사이트 동기화 작업에 사용할 수 있는 새 시스템 사용자를 구성합니다. rgw 모듈은 해당 Ceph Object Gateway 데몬을 생성하고 배포하도록 오케스트레이터에 지시합니다.

ceph mgr 모듈 enable rgw 명령을 사용하여 rgw 모듈을 활성화합니다. rgw 모듈을 활성화한 후 명령줄에서 인수를 전달하거나 yaml 사양 파일을 사용하여 영역을 부트스트랩합니다.

사전 요구 사항

  • 하나 이상의 OSD가 배포된 실행 중인 Red Hat Ceph Storage 클러스터

프로세스

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 'rgw'module을 활성화합니다.

    예제

    [ceph: root@host01 /]# ceph mgr module enable rgw
    Copy to Clipboard Toggle word wrap

  3. 명령줄 또는 yaml 사양 파일을 사용하여 Ceph Object Gateway 영역을 부트스트랩합니다.

    • 옵션 1: 명령줄 인터페이스를 사용합니다.

      구문

      ceph rgw realm bootstrap [--realm name REALM_NAME] [--zonegroup-name ZONEGROUP_NAME] [--zone-name ZONE_NAME] [--port PORT_NUMBER] [--placement HOSTNAME] [--start-radosgw]
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph rgw realm bootstrap --realm-name myrealm --zonegroup-name myzonegroup --zone-name myzone --port 5500 --placement="host01 host02" --start-radosgw
      Realm(s) created correctly. Please, use 'ceph rgw realm tokens' to get the token.
      Copy to Clipboard Toggle word wrap

    • 옵션 2: yaml 사양 파일을 사용합니다.

      1. root 사용자로 yaml 파일을 생성합니다.

        구문

        rgw_realm: REALM_NAME
        rgw_zonegroup: ZONEGROUP_NAME
        rgw_zone: ZONE_NAME
        placement:
          hosts:
           - HOSTNAME_1
           - HOSTNAME_2
        spec:
          rgw_frontend_port: PORT_NUMBER
        zone_endpoints: http://RGW_HOSTNAME_1:RGW_PORT_NUMBER_1, http://RGW_HOSTNAME_2:RGW_PORT_NUMBER_2
        Copy to Clipboard Toggle word wrap

        예제

        [root@host01 ~]# cat rgw.yaml
        
        rgw_realm: myrealm
        rgw_zonegroup: myzonegroup
        rgw_zone: myzone
        placement:
          hosts:
           - host01
           - host02
        spec:
          rgw_frontend_port: 5500
        zone_endpoints: http://<rgw_host1>:<rgw_port1>, http://<rgw_host2>:<rgw_port2>
        Copy to Clipboard Toggle word wrap

      2. YAML 파일을 컨테이너의 디렉터리에 마운트합니다.

        예제

        [root@host01 ~]# cephadm shell --mount rgw.yaml:/var/lib/ceph/rgw/rgw.yaml
        Copy to Clipboard Toggle word wrap

      3. 영역을 부트스트랩합니다.

        예제

        [ceph: root@host01 /]# ceph rgw realm bootstrap -i /var/lib/ceph/rgw/rgw.yaml
        Copy to Clipboard Toggle word wrap

        참고

        rgw 모듈에서 사용하는 사양 파일은 오케스트레이터에서 사용하는 형식과 동일합니다. 따라서 SSL 인증서와 같은 고급 구성 기능을 포함하여 지원되는 모든 오케스트레이션 Ceph Object Gateway 매개변수를 제공할 수 있습니다.

  4. 사용 가능한 토큰을 나열합니다.

    예제

    [ceph: root@host01 /]# ceph rgw realm tokens | jq
    
    [
      {
        "realm": "myrealm",
        "token": "ewogICAgInJlYWxtX25hbWUiOiAibXlyZWFsbSIsCiAgICAicmVhbG1faWQiOiAiZDA3YzAwZWYtOTA0MS00ZjZlLTg4MDQtN2Q0MDI0MDU1NmFlIiwKICAgICJlbmRwb2ludCI6ICJodHRwOi8vdm0tMDA6NDMyMSIsCiAgICAiYWNjZXNzX2tleSI6ICI5NTY1VFZSMVFWTExFRzdVNFIxRCIsCiAgICAic2VjcmV0IjogImQ3b0FJQXZrNEdYeXpyd3Q2QVZ6bEZNQmNnRG53RVdMMHFDenE3cjUiCn1="
      }
    ]
    Copy to Clipboard Toggle word wrap

    참고

    Ceph Object Gateway 데몬이 배포되기 전에 위의 명령을 실행하면 엔드포인트가 없으므로 토큰이 없다는 메시지가 표시됩니다.

  5. 이러한 토큰을 사용하여 보조 영역을 생성하고 기존 영역에 결합합니다.

    1. root 사용자로 yaml 파일을 생성합니다.

      예제

      [root@host01 ~]# cat zone-spec.yaml
      rgw_zone: my-secondary-zone
      rgw_realm_token: <token>
      placement:
        hosts:
         - ceph-node-1
         - ceph-node-2
      spec:
        rgw_frontend_port: 5500
      Copy to Clipboard Toggle word wrap

    2. 컨테이너의 디렉터리에 zone-spec.yaml 파일을 마운트합니다.

      예제

      [root@host01 ~]# cephadm shell --mount zone-spec.yaml:/var/lib/ceph/radosgw/zone-spec.yaml
      Copy to Clipboard Toggle word wrap

    3. 보조 영역에서 rgw'module을 활성화합니다.

      예제

      [ceph: root@host01 /]# ceph mgr module enable rgw
      Copy to Clipboard Toggle word wrap

    4. 보조 영역을 생성합니다.

      예제

      [ceph: root@host01 /]# ceph rgw zone create -i /var/lib/ceph/radosgw/zone-spec.yaml
      Copy to Clipboard Toggle word wrap

검증

  • Object Gateway 다중 사이트 배포를 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin realm list
    {
    "default_info": "d07c00ef-9041-4f6e-8804-7d40240556ae",
    "realms": [
    "myrealm"
    ]
    }
    Copy to Clipboard Toggle word wrap

4장. 기본 설정

스토리지 관리자는 Ceph Object Gateway 구성의 기본 사항을 배우는 것이 중요합니다. 기본값과 Beast라는 포함된 웹 서버에 대해 알아볼 수 있습니다. Ceph Object Gateway 관련 문제 해결의 경우 Ceph Object Gateway에서 생성한 로깅 및 디버깅 출력을 조정할 수 있습니다. 또한 Ceph Object Gateway를 사용하여 스토리지 클러스터 액세스에 고가용성 프록시를 제공할 수 있습니다.

사전 요구 사항

  • 실행 중이고 정상적인 Red Hat Ceph Storage 클러스터입니다.
  • Ceph Object Gateway 소프트웨어 패키지 설치.

4.1. DNS에 와일드카드 추가

호스트 이름과 같은 와일드카드를 DNS 서버의 DNS 레코드에 추가할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 개체 게이트웨이가 설치되어 있어야 합니다.
  • 관리 노드에 대한 루트 수준 액세스.

프로세스

  1. S3 스타일 하위 도메인이 있는 Ceph를 사용하려면 ceph-radosgw 데몬이 도메인 이름을 확인하는 데 사용하는 DNS 서버의 DNS 레코드에 와일드카드를 추가합니다.

    구문

    bucket-name.domain-name.com
    Copy to Clipboard Toggle word wrap

    dnsmasq 의 경우 앞에 호스트 이름 앞에 점(.)을 추가하여 다음 주소 설정을 추가합니다.

    구문

    address=/.HOSTNAME_OR_FQDN/HOST_IP_ADDRESS
    Copy to Clipboard Toggle word wrap

    예제

    address=/.gateway-host01/192.168.122.75
    Copy to Clipboard Toggle word wrap

    bind 의 경우 DNS 레코드에 와일드카드를 추가합니다.

    예제

    $TTL    604800
    @       IN      SOA     gateway-host01. root.gateway-host01. (
                                  2         ; Serial
                             604800         ; Refresh
                              86400         ; Retry
                            2419200         ; Expire
                             604800 )       ; Negative Cache TTL
    ;
    @       IN      NS      gateway-host01.
    @       IN      A       192.168.122.113
    *       IN      CNAME   @
    Copy to Clipboard Toggle word wrap

  2. DNS 서버를 다시 시작하고 하위 도메인이 있는 서버를 ping하여 ceph-radosgw 데몬이 하위 도메인 요청을 처리할 수 있는지 확인합니다.

    구문

    ping mybucket.HOSTNAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# ping mybucket.gateway-host01
    Copy to Clipboard Toggle word wrap

  3. DNS 서버가 로컬 시스템에 있는 경우 로컬 시스템의 nameserver 항목을 추가하여 /etc/resolv.conf 를 수정해야 할 수 있습니다.
  4. Ceph Object Gateway 영역 그룹에 호스트 이름을 추가합니다.

    1. 영역 그룹을 가져옵니다.

      구문

      radosgw-admin zonegroup get --rgw-zonegroup=ZONEGROUP_NAME > zonegroup.json
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup get --rgw-zonegroup=us > zonegroup.json
      Copy to Clipboard Toggle word wrap

    2. JSON 파일을 백업합니다.

      예제

      [ceph: root@host01 /]# cp zonegroup.json zonegroup.backup.json
      Copy to Clipboard Toggle word wrap

    3. zonegroup.json 파일을 확인합니다.

      예제

      [ceph: root@host01 /]# cat zonegroup.json
      {
          "id": "d523b624-2fa5-4412-92d5-a739245f0451",
          "name": "asia",
          "api_name": "asia",
          "is_master": "true",
          "endpoints": [],
          "hostnames": [],
          "hostnames_s3website": [],
          "master_zone": "d2a3b90f-f4f3-4d38-ac1f-6463a2b93c32",
          "zones": [
              {
                  "id": "d2a3b90f-f4f3-4d38-ac1f-6463a2b93c32",
                  "name": "india",
                  "endpoints": [],
                  "log_meta": "false",
                  "log_data": "false",
                  "bucket_index_max_shards": 11,
                  "read_only": "false",
                  "tier_type": "",
                  "sync_from_all": "true",
                  "sync_from": [],
                  "redirect_zone": ""
              }
          ],
          "placement_targets": [
              {
                  "name": "default-placement",
                  "tags": [],
                  "storage_classes": [
                      "STANDARD"
                  ]
              }
          ],
          "default_placement": "default-placement",
          "realm_id": "d7e2ad25-1630-4aee-9627-84f24e13017f",
          "sync_policy": {
              "groups": []
          }
      }
      Copy to Clipboard Toggle word wrap

    4. zonegroup.json 파일을 새 호스트 이름으로 업데이트합니다.

      예제

      "hostnames": ["host01", "host02","host03"],
      Copy to Clipboard Toggle word wrap

    5. Ceph Object Gateway에서 영역 그룹을 다시 설정합니다.

      구문

      radosgw-admin zonegroup set --rgw-zonegroup=ZONEGROUP_NAME --infile=zonegroup.json
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup set --rgw-zonegroup=us --infile=zonegroup.json
      Copy to Clipboard Toggle word wrap

    6. 기간을 업데이트합니다.

      예제

      [ceph: root@host01 /]# radosgw-admin period update --commit
      Copy to Clipboard Toggle word wrap

    7. DNS 설정이 적용되도록 Ceph Object Gateway를 다시 시작합니다.

4.2. Beast 프런트 엔드 웹 서버

Ceph Object Gateway는 C/C 내장 프런트 엔드 웹 서버인 Beast를 제공합니다. alal은 'Boost.Beast' C 라이브러리를 사용하여 HTTP를 구문 분석하고 비동기 네트워크 I/O를 위해 Boost.Asio 를 사용합니다.

4.3. al 구성 옵션

다음 Beast 구성 옵션은 RADOS 게이트웨이의 Ceph 구성 파일에 포함된 웹 서버에 전달할 수 있습니다. 각 옵션에는 기본값이 있습니다. 값을 지정하지 않으면 기본값은 비어 있습니다.

Expand
옵션설명Default

endpointssl_endpoint

주소가 점으로 된 10진수 형식의 IPv4 주소 문자열 또는 대괄호로 묶은 16진수 표기법의 IPv6 주소 형식으로 수신 주소를 설정합니다. 선택적 포트는 기본적으로 끝점의 경우 8080, ssl_ endpoint 의 경우 443 입니다. endpoint=[::1] endpoint=192.168.0.100:8000 에서와 같이 여러 번 지정할 수 있습니다.

ssl_certificate

SSL 사용 엔드포인트에 사용되는 SSL 인증서 파일의 경로입니다.

ssl_private_key

SSL 사용 엔드포인트에 사용되는 개인 키 파일의 선택적 경로입니다. ssl_certificate 에서 지정한 파일이 지정되지 않은 경우 개인 키로 사용됩니다.

tcp_nodelay

일부 환경에서의 성능 최적화.

SSL을 사용하는 Beast 옵션이 있는 /etc/ceph/ceph.conf 파일의 예:

...

[client.rgw.node1]
rgw frontends = beast ssl_endpoint=192.168.0.100:443 ssl_certificate=<path to SSL certificate>
Copy to Clipboard Toggle word wrap

참고

기본적으로 Beast 프런트 엔드는 서버에서 처리하는 모든 요청을 RADOS 게이트웨이 로그 파일에 기록하는 액세스 로그 행을 작성합니다.

추가 리소스

4.4. Beast에 대한 SSL 구성

OpenSSL 라이브러리를 사용하여 TLS(Transport Layer Security)를 제공하도록 Beast 프런트 엔드 웹 서버를 구성할 수 있습니다. Beast와 함께 SSL(Secure Socket Layer)을 사용하려면 Ceph Object Gateway 노드의 호스트 이름과 일치하는 CA(인증 기관)에서 인증서를 가져와야 합니다. 또한al에는 시크릿 키, 서버 인증서 및 단일 .pem 파일에 있는 다른 CA도 필요합니다.

중요

시크릿 키 해시가 포함되어 있으므로 .pem 파일에 대한 무단 액세스를 방지합니다.

중요

Red Hat은 SAN(Subject Alternative Name) 필드를 사용하여 CA에서 인증서를 가져올 것을 권장하고 S3-style 하위 도메인에 사용할 와일드카드를 사용하는 것이 좋습니다.

중요

Red Hat Ceph Storage 7.0 스토리지 시스템의 경우 Red Hat은 소규모에서 중간 규모 테스트 환경을 위해 Beast 프런트 엔드 웹 서버가 있는 SSL만 사용하는 것이 좋습니다. 프로덕션 환경의 경우 HAProxy 및 keepalived 를 사용하여 HAProxy에서 SSL 연결을 종료해야 합니다.

Ceph Object Gateway가 클라이언트에서 작동하고 사용자 지정 인증서가 서버에서 사용되는 경우 노드에서 해당 인증서를 가져온 다음 Ceph Object Gateway 사양 파일에서 extra_container_args 매개변수를 사용하여 etc/pki 디렉터리를 컨테이너에 매핑할 수 있습니다.

사전 요구 사항

  • 실행 중이고 정상적인 Red Hat Ceph Storage 클러스터입니다.
  • Ceph Object Gateway 소프트웨어 패키지 설치.
  • OpenSSL 소프트웨어 패키지를 설치합니다.
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.

프로세스

  1. 현재 디렉터리에 rgw.yml 이라는 새 파일을 생성합니다.

    예제

    [ceph: root@host01 /]# touch rgw.yml
    Copy to Clipboard Toggle word wrap

  2. 편집을 위해 rgw.yml 파일을 열고 환경에 맞게 사용자 지정합니다.

    구문

    service_type: rgw
    service_id: SERVICE_ID
    service_name: SERVICE_NAME
    placement:
      hosts:
      - HOST_NAME
    spec:
      ssl: true
      rgw_frontend_ssl_certificate: CERT_HASH
    Copy to Clipboard Toggle word wrap

    예제

    service_type: rgw
    service_id: foo
    service_name: rgw.foo
    placement:
      hosts:
      - host01
    spec:
      ssl: true
      rgw_frontend_ssl_certificate: |
        -----BEGIN RSA PRIVATE KEY-----
        MIIEpAIBAAKCAQEA+Cf4l9OagD6x67HhdCy4Asqw89Zz9ZuGbH50/7ltIMQpJJU0
        gu9ObNtIoC0zabJ7n1jujueYgIpOqGnhRSvsGJiEkgN81NLQ9rqAVaGpadjrNLcM
        bpgqJCZj0vzzmtFBCtenpb5l/EccMFcAydGtGeLP33SaWiZ4Rne56GBInk6SATI/
        JSKweGD1y5GiAWipBR4C74HiAW9q6hCOuSdp/2WQxWT3T1j2sjlqxkHdtInUtwOm
        j5Ism276IndeQ9hR3reFR8PJnKIPx73oTBQ7p9CMR1J4ucq9Ny0J12wQYT00fmJp
        -----END RSA PRIVATE KEY-----
        -----BEGIN CERTIFICATE-----
        MIIEBTCCAu2gAwIBAgIUGfYFsj8HyA9Zv2l600hxzT8+gG4wDQYJKoZIhvcNAQEL
        BQAwgYkxCzAJBgNVBAYTAklOMQwwCgYDVQQIDANLQVIxDDAKBgNVBAcMA0JMUjEM
        MAoGA1UECgwDUkhUMQswCQYDVQQLDAJCVTEkMCIGA1UEAwwbY2VwaC1zc2wtcmhj
        czUtOGRjeHY2LW5vZGU1MR0wGwYJKoZIhvcNAQkBFg5hYmNAcmVkaGF0LmNvbTAe
        -----END CERTIFICATE-----
    Copy to Clipboard Toggle word wrap

  3. 서비스 사양 파일을 사용하여 Ceph Object Gateway를 배포합니다.

    예제

    [ceph: root@host01 /]# ceph orch apply -i rgw.yml
    Copy to Clipboard Toggle word wrap

4.5. D3N 데이터 캐시

datacenter-Data-Delivery Network(D3N)는 NVMe 와 같은 고속 스토리지를 사용하여 액세스 측의 데이터 집합을 캐시합니다. 이러한 캐싱을 사용하면 빅 데이터 작업에서 엣지의 각 Rados Gateway 노드에서 사용할 수 있는 컴퓨팅 및 빠른 저장소 리소스를 사용할 수 있습니다. Rados 게이트웨이는 백엔드 오브젝트 저장소(OSD)의 캐시 서버 역할을 하며 재사용을 위해 로컬로 데이터를 저장합니다.

참고

Rados 게이트웨이를 다시 시작할 때마다 캐시 디렉터리의 콘텐츠가 제거됩니다.

4.5.1. D3N 캐시 디렉토리 추가

RGW에서 D3N 캐시를 활성화하려면 podman unit.run 에 D3N 캐시 디렉토리도 포함해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 개체 게이트웨이가 설치되어 있어야 합니다.
  • 관리 노드에 대한 루트 수준 액세스.
  • 각 RGW 노드에 있는 빠른 NVMe 드라이브로 로컬 캐시 스토리지 역할을 합니다.

프로세스

  1. NVMe 드라이브의 마운트 지점을 생성합니다.

    구문

    mkfs.ext4 nvme-drive-path
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# mkfs.ext4 /dev/nvme0n1
    mount /dev/nvme0n1 /mnt/nvme0n1/
    Copy to Clipboard Toggle word wrap

  2. 캐시 디렉터리 경로를 만듭니다.

    구문

    mkdir <nvme-mount-path>/cache-directory-name
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# mkdir /mnt/nvme0n1/rgw_datacache
    Copy to Clipboard Toggle word wrap

  3. nvme-mount-pathrgw_d3n_l1_datacache_persistent_path+rwx 권한을 제공합니다.

    구문

    chmod a+rwx nvme-mount-path ; chmod a+rwx rgw_d3n_l1_datacache_persistent_path
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# chmod a+rwx /mnt/nvme0n1 ; chmod a+rwx /mnt/nvme0n1/rgw_datacache/
    Copy to Clipboard Toggle word wrap

  4. extra_container_args 를 사용하여 RGW 사양 파일을 생성/수정하여 rgw_d3n_l1_datacache_persistent_pathpodman unit.run 에 추가합니다.

    구문

    "extra_container_args:
              "-v"
              "rgw_d3n_l1_datacache_persistent_path:rgw_d3n_l1_datacache_persistent_path"
    			"
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# cat rgw-spec.yml
    	service_type: rgw
    	service_id: rgw.test
    	placement:
    		hosts:
    		    host1
    		    host2
    		extra_container_args:
    		    "-v"
    		    "/mnt/nvme0n1/rgw_datacache/:/mnt/nvme0n1/rgw_datacache/"
    Copy to Clipboard Toggle word wrap

    참고

    단일 호스트에 RGW 인스턴스가 여러 개인 경우 각 인스턴스에 대해 별도의 rgw_d3n_l1_datacache_persistent_path 를 생성해야 하며 extra_container_args 에 각 경로를 추가해야 합니다.

    :

    각 호스트의 RGW 두 개의 인스턴스에 대해 rgw_d3n_l1_data cache_persistent_path:/mnt/nvme0n1/rgw_datacache/rgw1/mnt/nvme0n1/rgw_datacache/rgw2아래에 두 개의 별도의 캐시 디렉토리를 만듭니다.

    rgw 사양 파일의 "extra_container_args"를 예로 들 수 있습니다.

    "extra_container_args:
    	"-v"
    	"/mnt/nvme0n1/rgw_datacache/rgw1/:/mnt/nvme0n1/rgw_datacache/rgw1/"
    	"-v"
    	"/mnt/nvme0n1/rgw_datacache/rgw2/:/mnt/nvme0n1/rgw_datacache/rgw2/"
    "
    Copy to Clipboard Toggle word wrap

    rgw-spec.yml의 예::

    [ceph: root@host01 /]# cat rgw-spec.yml
    	service_type: rgw
    		service_id: rgw.test
    		placement:
    			hosts:
    				host1
    				host2
    			count_per_host: 2
    			extra_container_args:
    				"-v"
    				"/mnt/nvme0n1/rgw_datacache/rgw1/:/mnt/nvme0n1/rgw_datacache/rgw1/"
    				"-v"
    				"/mnt/nvme0n1/rgw_datacache/rgw2/:/mnt/nvme0n1/rgw_datacache/rgw2/"
    Copy to Clipboard Toggle word wrap
  5. RGW 서비스를 재배포합니다.

    예제

    [ceph: root@host01 /]# ceph orch apply -i rgw-spec.yml
    Copy to Clipboard Toggle word wrap

4.5.2. rados 게이트웨이에서 D3N 구성

기존 RGW에 D3N 데이터 캐시를 구성하여 Red Hat Ceph Storage 클러스터에서 실행되는 빅 데이터 작업의 성능을 향상시킬 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 개체 게이트웨이가 설치되어 있어야 합니다.
  • 관리 노드에 대한 루트 수준 액세스.
  • 캐시 스토리지 역할을 하는 빠른 NVMe입니다.

필요한 D3N 관련 구성 추가

기존 RGW에서 D3N을 활성화하려면 각 Rados 게이트웨이 클라이언트에 대해 다음 구성을 설정해야 합니다.

구문

# ceph config set <client.rgw> <CONF-OPTION> <VALUE>
Copy to Clipboard Toggle word wrap

  • rgw_d3n_l1_local_datacache_enabled=true
  • rgw_d3n_l1_datacache_persistent_path= 캐시 디렉터리의경로

    예제

    rgw_d3n_l1_datacache_persistent_path=/mnt/nvme/rgw_datacache/
    Copy to Clipboard Toggle word wrap

  • rgw_d3n_l1_datacache_size=max_size_of_cache_in_bytes

    예제

    rgw_d3n_l1_datacache_size=10737418240
    Copy to Clipboard Toggle word wrap

절차 예

  1. 테스트 오브젝트를 생성합니다.

    참고

    테스트 오브젝트는 캐시하려면 4MB보다 커야 합니다.

    예제

    [ceph: root@host01 /]# fallocate -l 1G ./1G.dat
    [ceph: root@host01 /]# s3cmd mb s3://bkt
    [ceph: root@host01 /]# s3cmd put ./1G.dat s3://bkt
    Copy to Clipboard Toggle word wrap

  2. GET 오브젝트를 수행합니다.

    예제

    [ceph: root@host01 /]# s3cmd get s3://bkt/1G.dat /dev/shm/1G_get.dat
    download: 's3://bkt/1G.dat' -> './1G_get.dat'  [1 of 1]
    1073741824 of 1073741824   100% in   13s    73.94 MB/s  done
    Copy to Clipboard Toggle word wrap

  3. 캐시 생성을 확인합니다. 캐시는 구성된 rgw_d3n_l1_datacache_persistent_path 내에 오브젝트 키-이름으로 구성된 이름으로 생성됩니다.

    예제

    [ceph: root@host01 /]# ls -lh /mnt/nvme/rgw_datacache
    
    rw-rr. 1 ceph ceph 1.0M Jun  2 06:18 cc7f967c-0021-43b2-9fdf-23858e868663.615391.1_shadow.ZCiCtMWeu_19wb100JIEZ-o4tv2IyA_1
    Copy to Clipboard Toggle word wrap

  4. 오브젝트에 대한 캐시가 생성되면 해당 오브젝트에 대한 다음 GET 작업에서 캐시에서 액세스하면 더 빠르게 액세스할 수 있습니다.

    예제

    [ceph: root@host01 /]# s3cmd get s3://bkt/1G.dat /dev/shm/1G_get.dat
    download: 's3://bkt/1G.dat' -> './1G_get.dat'  [1 of 1]
    1073741824 of 1073741824   100% in    6s   155.07 MB/s  done
    Copy to Clipboard Toggle word wrap

    위 예제에서는 캐시 가속을 설명하기 위해 RAM 드라이브(/dev/shm)에 씁니다.

4.6. 로깅 및 디버깅 출력 조정

설정 절차를 완료하면 로깅 출력을 확인하여 요구 사항을 충족하는지 확인합니다. 기본적으로 Ceph 데몬은 journald 에 기록되며 journalctl 명령을 사용하여 로그를 볼 수 있습니다. 또는 /var/log/ceph/CEPH_CLUSTER_ID/ 디렉터리에 있는 Ceph 데몬을 파일에 기록할 수도 있습니다.

중요

상세 로깅은 시간당 1GB 이상의 데이터를 생성할 수 있습니다. 이러한 유형의 로깅은 운영 체제의 디스크가 잠재적으로 채워지고 운영 체제가 작동하지 않을 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.

프로세스

  1. Ceph Object Gateway 로깅 출력을 늘리려면 다음 매개변수를 설정합니다.

    구문

    ceph config set client.rgw debug_rgw VALUE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph config set client.rgw debug_rgw 20
    Copy to Clipboard Toggle word wrap

    1. 런타임 시 이러한 설정을 수정할 수도 있습니다.

      구문

      ceph --admin-daemon /var/run/ceph/ceph-client.rgw.NAME.asok config set debug_rgw VALUE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph --admin-daemon /var/run/ceph/ceph-client.rgw.rgw.asok config set debug_rgw 20
      Copy to Clipboard Toggle word wrap

  2. 필요한 경우 출력을 파일에 기록하도록 Ceph 데몬을 구성할 수 있습니다. log_to_file, mon_cluster_log_to_file 옵션을 true 로 설정합니다.

    예제

    [ceph: root@host01 /]# ceph config set global log_to_file true
    [ceph: root@host01 /]# ceph config set global mon_cluster_log_to_file true
    Copy to Clipboard Toggle word wrap

4.7. 정적 웹 호스팅

스토리지 관리자는 Ceph Object Gateway를 구성하여 S3 버킷에서 정적 웹 사이트를 호스팅할 수 있습니다. 기존 웹 사이트 호스팅에는 각 웹 사이트에 대한 웹 서버를 구성해야 하며, 콘텐츠가 동적으로 변경되지 않을 때 리소스를 비효율적으로 사용할 수 있습니다. 예를 들어 PHP, 서블릿, 데이터베이스, nodejs 등과 같은 서버 측 서비스를 사용하지 않는 사이트를 예로 들 수 있습니다. 이 접근 방식은 각 사이트에 대해 웹 서버를 사용하는 가상 머신을 설정하는 것보다 훨씬 경제적입니다.

사전 요구 사항

  • 정상적이고 실행 중인 Red Hat Ceph Storage 클러스터입니다.

4.7.1. 정적 웹 호스팅 가정

정적 웹 호스팅에는 Red Hat Ceph Storage 클러스터를 실행하는 하나 이상의 Ceph Object Gateway 인스턴스와 정적 웹 사이트에 대해 두 개 이상의 Ceph Object Gateway 인스턴스가 필요합니다. Red Hat은 각 영역에 HA(고가용성) 프록시 및 keepalived 와 같은 로드 밸런서를 사용하는 여러 게이트웨이 인스턴스가 있다고 가정합니다.

중요

Red Hat 은 표준 S3/Swift API와 정적 웹 호스팅을 동시에 배포하기 위해 Ceph Object Gateway 인스턴스 사용을 지원하지 않습니다.

4.7.2. 정적 웹 호스팅 요구 사항

정적 웹 호스팅 기능은 자체 API를 사용하므로 S3 버킷에서 정적 웹 사이트를 사용하도록 게이트웨이를 구성하려면 다음이 필요합니다.

  1. S3 정적 웹 호스팅은 표준 S3/Swift API 사용 사례에 사용되는 인스턴스와 별도의 Ceph Object Gateway 인스턴스를 사용합니다.
  2. S3 정적 웹 사이트를 호스팅하는 게이트웨이 인스턴스에는 표준 S3/Swift API 게이트웨이 인스턴스에서 별도의 겹치지 않는 도메인 이름이 있어야 합니다.
  3. S3 정적 웹 사이트를 호스팅하는 게이트웨이 인스턴스는 표준 S3/Swift API 게이트웨이 인스턴스와 별도의 공용 IP 주소를 사용해야 합니다.
  4. S3 정적 웹 사이트 로드 밸런싱을 호스팅하는 게이트웨이 인스턴스 및 필요한 경우 HAProxy/keepalived를 사용하여 SSL을 종료합니다.

4.7.3. 정적 웹 호스팅 게이트웨이 설정

정적 웹 호스팅에 대해 Ceph Object Gateway를 활성화하려면 다음 옵션을 설정합니다.

구문

ceph config set client.rgw OPTION VALUE
Copy to Clipboard Toggle word wrap

예제

[ceph: root@host01 /]# ceph config set client.rgw rgw_enable_static_website true
[ceph: root@host01 /]# ceph config set client.rgw rgw_enable_apis s3,s3website
[ceph: root@host01 /]# ceph config set client.rgw rgw_dns_name objects-zonegroup.example.com
[ceph: root@host01 /]# ceph config set client.rgw rgw_dns_s3website_name objects-website-zonegroup.example.com
[ceph: root@host01 /]# ceph config set client.rgw rgw_resolve_cname true
Copy to Clipboard Toggle word wrap

rgw_enable_static_website 설정은 true 여야 합니다. rgw_enable_apis 설정은 s3website API를 활성화해야 합니다. rgw_dns_namergw_dns_s3website_name 설정은 정규화된 도메인을 제공해야 합니다. 사이트에서 정식 이름 확장을 사용하는 경우 rgw_resolve_cname 옵션을 true 로 설정합니다.

중요

rgw_dns_namergw_dns_s3website_name 의 FQDN은 겹치 않아야 합니다.

4.7.4. 정적 웹 호스팅 DNS 구성

다음은 가정된 DNS 설정의 예입니다. 처음 두 행은 표준 S3 인터페이스를 사용하여 게이트웨이 인스턴스의 도메인을 지정하고 IPv4 및 IPv6 주소를 가리킵니다. 세 번째 줄은 표준 이름 확장을 사용하여 S3 버킷에 대한 와일드카드 CNAME 설정을 제공합니다. 네 번째 줄과 다섯 번째 줄은 S3 웹 사이트 인터페이스를 사용하여 게이트웨이 인스턴스의 도메인을 지정하고 해당 IPv4 및 IPv6 주소를 가리킵니다.

objects-zonegroup.domain.com. IN    A 192.0.2.10
objects-zonegroup.domain.com. IN AAAA 2001:DB8::192:0:2:10
*.objects-zonegroup.domain.com. IN CNAME objects-zonegroup.domain.com.
objects-website-zonegroup.domain.com. IN    A 192.0.2.20
objects-website-zonegroup.domain.com. IN AAAA 2001:DB8::192:0:2:20
Copy to Clipboard Toggle word wrap
참고

처음 두 줄의 IP 주소는 네 번째와 다섯 번째 줄의 IP 주소와 다릅니다.

다중 사이트 구성에서 Ceph Object Gateway를 사용하는 경우 라우팅 솔루션을 사용하여 트래픽을 클라이언트에 가장 가까운 게이트웨이로 라우팅하는 것이 좋습니다.

AWS(Amazon Web Service)에는 호스트 이름과 일치하도록 정적 웹 호스트 버킷이 필요합니다. Ceph는 DNS를 구성하는 몇 가지 방법을 제공하며 프록시에 일치하는 인증서가 있는 경우 HTTPS가 작동합니다.

하위 도메인의 버킷에 호스트 이름

AWS 스타일 S3 하위 도메인을 사용하려면 DNS 항목에서 요청을 모든 버킷으로 리디렉션할 수 있는 와일드카드를 사용합니다. DNS 항목은 다음과 같을 수 있습니다.

*.objects-website-zonegroup.domain.com. IN CNAME objects-website-zonegroup.domain.com.
Copy to Clipboard Toggle word wrap

버킷 이름이 bucket1 인 버킷 이름에 액세스합니다.

http://bucket1.objects-website-zonegroup.domain.com
Copy to Clipboard Toggle word wrap

버킷이 일치하지 않는 호스트 이름

Ceph는 요청에 버킷 이름을 포함하지 않고 Ceph Object Gateway에 고유한 도메인 이름을 버킷에 매핑하는 기능을 지원합니다. 도메인 이름을 사용하여 버킷에 액세스하려면 도메인 이름을 버킷 이름에 매핑합니다. DNS 항목은 다음과 같을 수 있습니다.

www.example.com. IN CNAME bucket2.objects-website-zonegroup.domain.com.
Copy to Clipboard Toggle word wrap

여기서 버킷 이름은 bucket2 입니다.

다음과 같은 방식으로 버킷에 액세스합니다.

http://www.example.com
Copy to Clipboard Toggle word wrap

CNAME을 사용하여 호스트 이름으로 긴 버킷

AWS는 일반적으로 도메인 이름과 일치하도록 버킷 이름이 필요합니다. CNAME을 사용하여 정적 웹 호스팅에 대한 DNS를 구성하려면 DNS 항목은 다음과 같을 수 있습니다.

www.example.com. IN CNAME www.example.com.objects-website-zonegroup.domain.com.
Copy to Clipboard Toggle word wrap

다음과 같은 방식으로 버킷에 액세스합니다.

http://www.example.com
Copy to Clipboard Toggle word wrap

CNAME 없이 호스트 이름으로 긴 버킷

DNS 이름에 SOA,NS,MX 또는 TXT 와 같은 다른 비 CNAME 레코드가 포함된 경우 DNS 레코드는 도메인 이름을 IP 주소에 직접 매핑해야 합니다. 예를 들면 다음과 같습니다.

www.example.com. IN A 192.0.2.20
www.example.com. IN AAAA 2001:DB8::192:0:2:20
Copy to Clipboard Toggle word wrap

다음과 같은 방식으로 버킷에 액세스합니다.

http://www.example.com
Copy to Clipboard Toggle word wrap

4.7.5. 정적 웹 호스팅 사이트 생성

정적 웹 사이트를 만들려면 다음 단계를 수행합니다.

  1. S3 버킷을 생성합니다. 버킷 이름 MIGHT은 웹 사이트의 도메인 이름과 동일합니다. 예를 들어 mysite.com 의 버킷 이름이 mysite.com 일 수 있습니다. 이는 AWS에 필요하지만 Ceph에는 필요하지 않습니다.

  2. 정적 웹 사이트 콘텐츠를 버킷에 업로드합니다. 콘텐츠에는 HTML, CSS, 클라이언트 측 JavaScript, 이미지, 오디오/비디오 콘텐츠 및 기타 다운로드 가능한 파일이 포함될 수 있습니다. 웹 사이트에는 index.html 파일이 있어야 하며 error.html 파일이 있을 수 있습니다.
  3. 웹사이트의 내용을 확인합니다. 이 시점에서 버킷의 작성자만 콘텐츠에 액세스할 수 있습니다.
  4. 공개적으로 읽을 수 있도록 파일에 대한 권한을 설정합니다.

4.8. Ceph Object Gateway의 고가용성

스토리지 관리자는 Ceph Object Gateway의 많은 인스턴스를 단일 영역에 할당할 수 있습니다. 이를 통해 부하, 즉 동일한 영역 그룹 및 영역이 증가함에 따라 확장할 수 있지만 고가용성 프록시를 사용하기 위해 페더레이션 아키텍처가 필요하지 않습니다. 각 Ceph Object Gateway 데몬에는 자체 IP 주소가 있으므로 ingress 서비스를 사용하여 여러 Ceph Object Gateway 데몬 또는 노드에서 부하를 분산할 수 있습니다. 수신 서비스는 Ceph Object Gateway 환경의 HAProxy 및 keepalived 데몬을 관리합니다. HAProxy 서버에서 HTTPS 트래픽을 종료하고 Ceph Object Gateway의 HAProxy 서버와 Beast 프런트 엔드 웹 서버 인스턴스 간에 HTTP를 사용할 수도 있습니다.

사전 요구 사항

  • 다른 호스트에서 실행 중인 두 개 이상의 Ceph Object Gateway 데몬.
  • 다른 호스트에서 실행되는 수신 서비스의 두 개 이상의 인스턴스 용량.

4.8.1. 고가용성 서비스

수신 서비스는 Ceph Object Gateway에 고가용성 엔드포인트를 제공합니다. 수신 서비스는 필요에 따라 원하는 수의 호스트에 배포할 수 있습니다. Red Hat은 각 서버가 수신 서비스로 구성된 Red Hat Enterprise Linux 서버를 두 개 이상 지원하는 것이 좋습니다. 최소 구성 옵션 세트로 HA(고가용성) 서비스를 실행할 수 있습니다. Ceph 오케스트레이터는 유동 가상 IP 주소로 로드 밸런싱을 제공하여 haproxykeepalived 데몬을 관리하는 수신 서비스를 배포합니다. 활성 haproxy 는 모든 Ceph Object Gateway 요청을 사용 가능한 모든 Ceph Object Gateway 데몬에 배포합니다.

가상 IP 주소는 기본 호스트라고 하는 수신 호스트 중 하나에 자동으로 구성됩니다. Ceph 오케스트레이터는 동일한 서브넷의 일부로 구성된 기존 IP 주소를 기반으로 첫 번째 네트워크 인터페이스를 선택합니다. 가상 IP 주소가 동일한 서브넷에 속하지 않는 경우 기존 IP 주소와 일치하도록 Ceph 오케스트레이터의 서브넷 목록을 정의할 수 있습니다. keepalived 데몬과 활성 haproxy 가 기본 호스트에 응답하지 않으면 가상 IP 주소가 백업 호스트로 이동합니다. 이 백업 호스트가 새 기본 호스트가 됩니다.

주의

현재 구성된 IP 주소가 없는 네트워크 인터페이스에서 가상 IP 주소를 구성할 수 없습니다.

중요

SSL(보안 소켓 계층)을 사용하려면 Ceph Object Gateway가 아닌 Ingress 서비스에서 SSL을 종료해야 합니다.

4.8.2. Ceph Object Gateway의 고가용성 구성

Ceph Object Gateway에 대한 HA(고가용성)를 구성하려면 YAML 구성 파일을 작성하고 Ceph 오케스트레이터는 인그레스 서비스의 설치, configuraton 및 관리를 수행합니다. 수신 서비스는 haproxykeepalived 데몬을 사용하여 Ceph Object Gateway의 고가용성을 제공합니다.

사전 요구 사항

  • 수신 서비스를 설치하기 위해 Red Hat Enterprise Linux 9 이상을 실행하는 최소 두 개의 호스트.
  • 정상 실행 Red Hat Ceph Storage 클러스터.
  • 다른 호스트에서 실행되는 최소 두 개의 Ceph Object Gateway 데몬입니다.
  • Ingress 서비스를 실행하는 호스트에 대한 루트 수준 액세스.
  • 방화벽을 사용하는 경우 HTTP 및 HTTPS 트래픽의 경우 포트 443에 대해 포트 80을 엽니다.

프로세스

  1. ingress.yaml 파일을 생성합니다.

    예제

    [root@host01 ~] touch ingress.yaml
    Copy to Clipboard Toggle word wrap

  2. 편집할 ingress.yaml 파일을 엽니다. 다음 옵션을 추가하고 환경에 적용할 수 있는 값을 추가합니다.

    구문

    service_type: ingress 
    1
    
    service_id: SERVICE_ID 
    2
    
    placement: 
    3
    
      hosts:
        - HOST1
        - HOST2
        - HOST3
    spec:
      backend_service: SERVICE_ID
      virtual_ip: IP_ADDRESS/CIDR 
    4
    
      frontend_port: INTEGER 
    5
    
      monitor_port: INTEGER 
    6
    
      virtual_interface_networks: 
    7
    
        - IP_ADDRESS/CIDR
      ssl_cert: | 
    8
    Copy to Clipboard Toggle word wrap

    1
    ingress 로 설정해야 합니다.
    2
    기존 Ceph Object Gateway 서비스 이름과 일치해야 합니다.
    3
    haproxykeepalived 컨테이너를 배포할 위치.
    4
    수신 서비스를 사용할 수 있는 가상 IP 주소입니다.
    5
    Ingress 서비스에 액세스할 포트입니다.
    6
    haproxy 로드 밸런서 상태에 액세스할 포트입니다.
    7
    사용 가능한 서브넷의 선택적 목록입니다.
    8
    선택적 SSL 인증서 및 개인 키.

    예제

    service_type: ingress
    service_id: rgw.foo
    placement:
      hosts:
        - host01.example.com
        - host02.example.com
        - host03.example.com
    spec:
      backend_service: rgw.foo
      virtual_ip: 192.168.1.2/24
      frontend_port: 8080
      monitor_port: 1967
      virtual_interface_networks:
        - 10.10.0.0/16
      ssl_cert: |
        -----BEGIN CERTIFICATE-----
        MIIEpAIBAAKCAQEA+Cf4l9OagD6x67HhdCy4Asqw89Zz9ZuGbH50/7ltIMQpJJU0
        gu9ObNtIoC0zabJ7n1jujueYgIpOqGnhRSvsGJiEkgN81NLQ9rqAVaGpadjrNLcM
        bpgqJCZj0vzzmtFBCtenpb5l/EccMFcAydGtGeLP33SaWiZ4Rne56GBInk6SATI/
        JSKweGD1y5GiAWipBR4C74HiAW9q6hCOuSdp/2WQxWT3T1j2sjlqxkHdtInUtwOm
        j5Ism276IndeQ9hR3reFR8PJnKIPx73oTBQ7p9CMR1J4ucq9Ny0J12wQYT00fmJp
        -----END CERTIFICATE-----
        -----BEGIN PRIVATE KEY-----
        MIIEBTCCAu2gAwIBAgIUGfYFsj8HyA9Zv2l600hxzT8+gG4wDQYJKoZIhvcNAQEL
        BQAwgYkxCzAJBgNVBAYTAklOMQwwCgYDVQQIDANLQVIxDDAKBgNVBAcMA0JMUjEM
        MAoGA1UECgwDUkhUMQswCQYDVQQLDAJCVTEkMCIGA1UEAwwbY2VwaC1zc2wtcmhj
        czUtOGRjeHY2LW5vZGU1MR0wGwYJKoZIhvcNAQkBFg5hYmNAcmVkaGF0LmNvbTAe
        -----END PRIVATE KEY-----
    Copy to Clipboard Toggle word wrap

  3. Cephadm 쉘을 시작합니다.

    예제

    [root@host01 ~]# cephadm shell --mount ingress.yaml:/var/lib/ceph/radosgw/ingress.yaml
    Copy to Clipboard Toggle word wrap

  4. 최신 haproxykeepalived 이미지를 구성합니다.

    구문

    ceph config set mgr mgr/cephadm/container_image_haproxy HAPROXY_IMAGE_ID
    ceph config set mgr mgr/cephadm/container_image_keepalived KEEPALIVED_IMAGE_ID
    Copy to Clipboard Toggle word wrap

    Red Hat Enterprise Linux 9

    [ceph: root@host01 /]# ceph config set mgr mgr/cephadm/container_image_haproxy registry.redhat.io/rhceph/rhceph-haproxy-rhel9:latest
    [ceph: root@host01 /]# ceph config set mgr mgr/cephadm/container_image_keepalived registry.redhat.io/rhceph/keepalived-rhel9:latest
    Copy to Clipboard Toggle word wrap

  5. Ceph 오케스트레이터를 사용하여 새 수신 서비스를 설치하고 구성합니다.

    [ceph: root@host01 /]# ceph orch apply -i /var/lib/ceph/radosgw/ingress.yaml
    Copy to Clipboard Toggle word wrap
  6. Ceph 오케스트레이터가 완료되면 HA 구성을 확인합니다.

    1. 수신 서비스를 실행하는 호스트에서 가상 IP 주소가 표시되는지 확인합니다.

      예제

      [root@host01 ~]# ip addr show
      Copy to Clipboard Toggle word wrap

    2. Ceph 클라이언트에서 Ceph Object Gateway에 연결을 시도합니다.

      구문

      wget HOST_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [root@client ~]# wget host01.example.com
      Copy to Clipboard Toggle word wrap

      아래 예제에서와 유사한 콘텐츠가 있는 index.html 이 반환되면 Ceph Object Gateway의 HA 구성이 제대로 작동합니다.

      예제

      <?xml version="1.0" encoding="UTF-8"?>
      	<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
      		<Owner>
      			<ID>anonymous</ID>
      			<DisplayName></DisplayName>
      		</Owner>
      		<Buckets>
      		</Buckets>
      	</ListAllMyBucketsResult>
      Copy to Clipboard Toggle word wrap

5장. 다중 사이트 구성 및 관리

스토리지 관리자는 다양한 사용 사례에 맞게 여러 Ceph Object Gateway를 구성하고 관리할 수 있습니다. 재해 복구 및 페일오버 이벤트 중에 수행할 작업을 확인할 수 있습니다. 또한 다중 사이트 Ceph Object Gateway 환경에서 영역, 영역 및 동기화 정책에 대해 자세히 알아볼 수 있습니다.

단일 영역 구성은 일반적으로 인스턴스 간에 게이트웨이 클라이언트 요청을 로드 밸런싱할 수 있는 하나 이상의 ceph-radosgw 인스턴스를 포함하는 하나의 영역 그룹으로 구성됩니다. 단일 영역 구성에서 일반적으로 여러 게이트웨이 인스턴스는 단일 Ceph 스토리지 클러스터를 가리킵니다. 그러나 Red Hat은 Ceph Object Gateway에 대한 여러 다중 사이트 구성 옵션을 지원합니다.

  • 다중 영역: 고급 구성은 하나의 영역 그룹과 여러 영역으로 구성되며, 각 영역은 하나 이상의 ceph-radosgw 인스턴스가 있습니다. 각 영역은 자체 Ceph Storage 클러스터에서 지원합니다. 영역 그룹의 여러 영역을 사용하면 영역 그룹 중 하나에 상당한 오류가 발생할 경우 영역 그룹에 대한 재해 복구를 제공합니다. 각 영역은 활성화되어 있으며 쓰기 작업을 수신할 수 있습니다. 재해 복구 외에도 여러 활성 영역이 콘텐츠 전달 네트워크의 기반 역할을 할 수도 있습니다.
  • multi-zone-group: Ceph Object Gateway는 하나 이상의 영역이 있는 각 영역 그룹인 여러 영역 그룹도 지원할 수 있습니다. 동일한 영역 내의 영역 그룹에 저장된 오브젝트는 글로벌 네임스페이스를 공유하므로 영역 그룹과 영역에서 고유한 오브젝트 ID를 확인할 수 있습니다.
  • 다중 Cryostat: Ceph Object Gateway는 단일 영역 그룹 또는 여러 영역 그룹일 수 있는 영역의 개념을 지원하며 영역에 대해 전역적으로 고유한 네임스페이스를 지원합니다. 여러 영역은 다양한 구성 및 네임스페이스를 지원하는 기능을 제공합니다.

사전 요구 사항

  • 정상 실행 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 배포.

5.1. 요구 사항 및 사용량

다중 사이트 구성에는 Ceph 스토리지 클러스터마다 두 개 이상의 Ceph 스토리지 클러스터와 최소 두 개의 Ceph 개체 게이트웨이 인스턴스가 필요합니다.

이 가이드에서는 지리적으로 별도의 위치에 있는 두 개 이상의 Ceph 스토리지 클러스터를 가정하지만, 구성은 동일한 물리적 사이트에서 작동할 수 있습니다. 이 가이드에서는 각각 rgw1,rgw2,rgw3rgw4 라는 4 개의 Ceph 개체 게이트웨이 서버를 가정합니다.

다중 사이트 구성에는 마스터 영역 그룹과 마스터 영역이 필요합니다. 또한 각 영역 그룹에는 마스터 영역이 필요합니다. 영역 그룹에는 하나 이상의 보조 또는 마스터 영역이 있을 수 있습니다.

중요

다중 사이트에 대한 네트워크 고려 사항을 계획할 때 다중 사이트 동기화 네트워크에서 관찰되는 관계 대역폭과 대기 시간을 이해하고 클라이언트는 보조 사이트와 관련된 현재 동기화 상태와 직접 상관관계를 수집하는 것이 중요합니다. Red Hat Ceph Storage 다중 사이트 클러스터 간의 네트워크 링크에서 보조 사이트의 효율적인 복구 시간을 유지하기 위해 기본 클러스터의 ingest를 처리할 수 있어야 합니다. 다중 사이트 동기화는 비동기적이고 제한 사항 중 하나는 동기화 게이트웨이가 링크 전체에서 데이터를 처리할 수 있는 속도입니다. 네트워크 상호 연결 속도 측면에서 보는 예는 클라이언트 게이트웨이마다 8TB 또는 누적 수신 데이터에 대해 1GbE 또는 데이터 센터 간 연결일 수 있습니다. 따라서 다른 두 개의 사이트로 복제하고 하루에 16TB를 수집하는 경우 다중 사이트 복제를 위해 6GbE의 전용 대역폭이 필요합니다.

또한 Red Hat은 인터넷을 통한 VPN이 발생한 추가 오버헤드로 인해 적합하지 않으므로 프라이빗 이더넷 또는 Dense파장 분류 다중화(DWDM)를 권장합니다.

중요

영역의 마스터 영역 그룹 내의 마스터 영역은 사용자, 할당량 및 버킷( radosgw-admin CLI로 생성된)을 포함하여 영역 메타데이터의 마스터 사본을 저장합니다. 이 메타데이터는 보조 영역 및 보조 영역 그룹과 자동으로 동기화됩니다. radosgw-admin CLI로 실행된 메타데이터 작업은 마스터 영역 그룹의 마스터 영역 내의 호스트에서 실행해야 보조 영역 그룹 및 영역에 동기화되도록 해야 합니다. 현재 보조 영역 및 영역 그룹에서 메타데이터 작업을 실행할 수 있지만 동기화 되지 않아 조각화된 메타데이터로 이어지는 것은 권장되지 않습니다.

참고

다중 사이트에 새 Ceph Object Gateway 배포의 경우 메타데이터 작업을 보조 사이트에 동기화하는 데 약 20분이 걸립니다.

다음 예제에서 rgw1 호스트는 마스터 영역 그룹의 마스터 영역 역할을 합니다. rgw2 호스트는 마스터 영역 그룹의 보조 영역 역할을 합니다. rgw3 호스트는 보조 영역 그룹의 마스터 영역 역할을 하며, rgw4 호스트는 보조 영역 그룹의 보조 영역 역할을 합니다.

중요

Red Hat은 로드 밸런서와 3개의 Ceph Object Gateway 데몬을 사용하여 엔드 포인트를 다중 사이트와 동기화하는 것이 좋습니다. 로드 밸런서를 통해 클라이언트 I/O 작업 전용인 다중 사이트 구성에서 Ceph Object Gateway 노드가 동기화되지 않은 경우 ceph config set client.rgw.CLIENT_NODE rgw_run_sync_thread false 명령을 실행하여 Ceph Object Gateway를 다시 시작합니다.

다음은 게이트웨이를 동기화하기 위한 HAProxy의 일반적인 구성 파일입니다.

예제

[root@host01 ~]# cat ./haproxy.cfg

global

	log     	127.0.0.1 local2

	chroot  	/var/lib/haproxy
	pidfile 	/var/run/haproxy.pid
	maxconn 	7000
	user    	haproxy
	group   	haproxy
	daemon

	stats socket /var/lib/haproxy/stats

defaults

	mode                	http
	log                 	global
	option              	httplog
	option              	dontlognull
	option http-server-close
	option forwardfor   	except 127.0.0.0/8
	option              	redispatch
	retries             	3
	timeout http-request	10s
	timeout queue       	1m
	timeout connect     	10s
	timeout client      	30s
	timeout server      	30s
	timeout http-keep-alive 10s
	timeout check       	10s
        timeout client-fin 1s
        timeout server-fin 1s
	maxconn             	6000


listen  stats
	bind	0.0.0.0:1936
    	mode        	http
    	log         	global

    	maxconn 256


    	clitimeout  	10m
    	srvtimeout  	10m
    	contimeout  	10m
    	timeout queue   10m

# JTH start
    	stats enable
    	stats hide-version
    	stats refresh 30s
    	stats show-node
##    	stats auth admin:password
    	stats uri  /haproxy?stats
       stats admin if TRUE


frontend  main
	bind	 *:5000
	acl url_static   	path_beg   	-i /static /images /javascript /stylesheets
	acl url_static   	path_end   	-i .jpg .gif .png .css .js

	use_backend static      	if url_static
	default_backend         	app
        maxconn 6000

backend static
	balance 	roundrobin
    fullconn 6000
    server  app8 host01:8080 check maxconn 2000
    server  app9 host02:8080 check maxconn 2000
    server  app10 host03:8080 check maxconn 2000


backend app
	balance 	roundrobin
    fullconn 6000
    server  app8 host01:8080 check maxconn 2000
    server  app9 host02:8080 check maxconn 2000
    server  app10 host03:8080 check maxconn 2000
Copy to Clipboard Toggle word wrap

5.2. 풀

Red Hat은 radosgw 데몬이 생성할 풀에 적절한 배치 그룹 수를 계산하기 위해 Ceph 배치 그룹의 풀 계산기 를 사용하는 것이 좋습니다. Ceph 구성 데이터베이스에서 계산된 값을 기본값으로 설정합니다.

예제

[ceph: root@host01 /]# ceph config set osd osd_pool_default_pg_num 50
[ceph: root@host01 /]# ceph config set osd osd_pool_default_pgp_num 50
Copy to Clipboard Toggle word wrap

참고

Ceph Object Gateway 인스턴스가 풀을 생성할 때 Ceph 구성을 변경하면 기본값을 사용합니다. 또는 수동으로 풀을 만들 수도 있습니다.

영역별 풀 이름은 이름 지정 규칙 ZONE_NAME.POOL_NAME 을 따릅니다. 예를 들어 us-east 라는 영역에는 다음과 같은 풀이 있습니다.

  • .rgw.root
  • us-east.rgw.control
  • us-east.rgw.meta
  • us-east.rgw.log
  • us-east.rgw.buckets.index
  • us-east.rgw.buckets.data
  • us-east.rgw.buckets.non-ec
  • us-east.rgw.meta:users.keys
  • us-east.rgw.meta:users.email
  • us-east.rgw.meta:users.swift
  • us-east.rgw.meta:users.uid

5.3. 단일 사이트 시스템을 다중 사이트로 마이그레이션

기본 영역 그룹 및 영역이 있는 단일 사이트 시스템에서 다중 사이트 시스템으로 마이그레이션하려면 다음 단계를 따르십시오.

  1. 영역을 생성합니다. realM_NAME 을 영역 이름으로 바꿉니다.

    구문

    radosgw-admin realm create --rgw-realm REALM_NAME --default
    Copy to Clipboard Toggle word wrap

  2. 기본 영역 및 영역 그룹의 이름을 변경합니다. NEW_ZONE_GROUP_NAMENEW_ZONE_NAME 을 각각 zonegroup 및 zone 이름으로 바꿉니다.

    구문

    radosgw-admin zonegroup rename --rgw-zonegroup default --zonegroup-new-name NEW_ZONE_GROUP_NAME
    radosgw-admin zone rename --rgw-zone default --zone-new-name NEW_ZONE_NAME --rgw-zonegroup NEW_ZONE_GROUP_NAME
    Copy to Clipboard Toggle word wrap

  3. 기본 zonegroup의 api_name 의 이름을 변경합니다. NEW_ZONE_GROUP_NAME 을 zonegroup 이름으로 바꿉니다. zonegroup 맵의 api_name 필드는 다양한 영역의 데이터 복제에 사용되는 RADOS API의 이름을 나타냅니다. 이 필드를 사용하면 클라이언트가 올바른 API와 상호 작용하여 Ceph 스토리지 클러스터 내의 데이터에 액세스하고 관리할 수 있습니다.

    구문

    radosgw-admin zonegroup modify --api-name NEW_ZONE_GROUP_NAME --rgw-zonegroup NEW_ZONE_GROUP_NAME
    Copy to Clipboard Toggle word wrap

  4. 기본 zonegroup을 구성합니다. NEW_ZONE_GROUP_NAME 을 zonegroup 이름으로 바꾸고 realM_NAME 을 영역 이름으로 바꿉니다. ENDPOINT 를 zonegroup에서 정규화된 도메인 이름으로 교체합니다.

    구문

    radosgw-admin zonegroup modify --rgw-realm REALM_NAME --rgw-zonegroup NEW_ZONE_GROUP_NAME --endpoints http://ENDPOINT --master --default
    Copy to Clipboard Toggle word wrap

  5. 기본 영역을 구성합니다. realM_NAME 을 영역 이름으로, NEW_ZONE_GROUP_NAME 을 zonegroup 이름으로, NEW_ZONE_NAME 을 영역 이름으로, ENDPOINT 를 영역 그룹에서 정규화된 도메인 이름으로 바꿉니다.

    구문

    radosgw-admin zone modify --rgw-realm REALM_NAME --rgw-zonegroup NEW_ZONE_GROUP_NAME --rgw-zone NEW_ZONE_NAME --endpoints http://ENDPOINT --master --default
    Copy to Clipboard Toggle word wrap

  6. 시스템 사용자를 생성합니다. USER_ID 를 사용자 이름으로 바꿉니다. DISPLAY_NAME 을 표시 이름으로 교체합니다. 공백을 포함할 수 있습니다.

    구문

    radosgw-admin user create --uid USER_ID --display-name DISPLAY_NAME --access-key ACCESS_KEY --secret SECRET_KEY --system
    Copy to Clipboard Toggle word wrap

  7. 업데이트된 구성을 커밋합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  8. rgw 서비스 이름에 대한 grep

    구문

    ceph orch ls | grep rgw
    Copy to Clipboard Toggle word wrap

  9. realm, zonegroup 및 기본 영역에 대한 구성을 설정합니다.

    구문

    ceph config set client.rgw.SERVICE_NAME rgw_realm REALM_NAME
    ceph config set client.rgw.SERVICE_NAME rgw_zonegroup ZONE_GROUP_NAME
    ceph config set client.rgw.SERVICE_NAME rgw_zone PRIMARY_ZONE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm test_realm
    [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup us
    [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone us-east-1
    Copy to Clipboard Toggle word wrap

  10. Ceph Object Gateway를 다시 시작합니다.

    예제

    [ceph: root@host01 /]# systemctl restart ceph-radosgw@rgw.`hostname -s`
    Copy to Clipboard Toggle word wrap

    구문

    [ceph: root@host01 /]# ceph orch restart _RGW_SERVICE_NAME_
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch restart rgw.rgwsvcid.mons-1.jwgwwp
    Copy to Clipboard Toggle word wrap

참고

다중 사이트에서 단일(기본 영역) 사이트로의 복원은 지원되지 않습니다.

5.4. 보조 영역 설정

영역 그룹 내의 영역은 모든 데이터를 복제하여 각 영역에 동일한 데이터가 있는지 확인합니다. 보조 영역을 생성할 때 보조 영역을 제공하도록 식별된 호스트에서 모든 radosgw-admin 영역 작업을 실행합니다.

참고

추가 영역을 추가하려면 보조 영역을 추가하는 것과 동일한 절차를 따릅니다. 다른 영역 이름을 사용합니다.

중요
  • 마스터 영역 그룹의 마스터 영역에 있는 호스트에서 사용자 생성 및 할당량과 같은 메타데이터 작업을 실행합니다. 마스터 영역과 보조 영역은 RESTful API에서 버킷 작업을 수신할 수 있지만 보조 영역은 버킷 작업을 마스터 영역으로 리디렉션합니다. 마스터 영역이 다운되면 버킷 작업이 실패합니다. radosgw-admin CLI를 사용하여 버킷을 생성하는 경우 버킷이 다른 영역 그룹 및 영역과 동기화되도록 마스터 영역 그룹의 마스터 영역 내의 호스트에서 버킷을 실행해야 합니다.
  • --yes-i-really-mean-it 을 사용하여 보조 영역에 사용자를 생성하는 경우에도 특정 사용자에 대한 버킷 생성은 지원되지 않습니다.

사전 요구 사항

  • 두 개 이상의 실행 중인 Red Hat Ceph Storage 클러스터
  • 각 Red Hat Ceph Storage 클러스터에 하나씩 두 개 이상의 Ceph Object Gateway 인스턴스.
  • 모든 노드에 대한 루트 수준 액세스.
  • 노드 또는 컨테이너가 스토리지 클러스터에 추가됩니다.
  • 모든 Ceph Manager, Monitor 및 OSD 데몬이 배포됩니다.

프로세스

  1. cephadm 쉘에 로그인합니다.

    예제

    [root@host04 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 호스트에서 기본 영역 구성을 가져옵니다.

    구문

    radosgw-admin realm pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin realm pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
    Copy to Clipboard Toggle word wrap

  3. 호스트에서 기본 기간 구성을 가져옵니다.

    구문

    radosgw-admin period pull --url=URL_TO_PRIMARY_ZONE_GATEWAY --access-key=ACCESS_KEY --secret-key=SECRET_KEY
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin period pull --url=http://10.74.249.26:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
    Copy to Clipboard Toggle word wrap

  4. 보조 영역을 구성합니다.

    참고

    모든 영역은 기본적으로 활성-활성 구성으로 실행됩니다. 즉, 게이트웨이 클라이언트는 모든 영역에 데이터를 쓸 수 있으며 영역은 영역 그룹 내의 다른 모든 영역에 데이터를 복제합니다. 보조 영역이 쓰기 작업을 수락하지 않아야 하는 경우 '--read-only 플래그를 지정하여 마스터 영역과 보조 영역 간에 활성-수동 구성을 만듭니다. 또한 마스터 영역 그룹의 마스터 영역에 저장된 생성된 시스템 사용자의 access_keysecret_key 를 제공합니다.

    구문

    radosgw-admin zone create --rgw-zonegroup=_ZONE_GROUP_NAME_ \
                 --rgw-zone=_SECONDARY_ZONE_NAME_ --endpoints=http://_RGW_SECONDARY_HOSTNAME_:_RGW_PRIMARY_PORT_NUMBER_1_ \
                 --access-key=_SYSTEM_ACCESS_KEY_ --secret=_SYSTEM_SECRET_KEY_ \
                 [--read-only]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east-2 --endpoints=http://rgw2:80 --access-key=LIPEYZJLTWXRKXS9LPJC --secret-key=IsAje0AVDNXNw48LjMAimpCpI7VaxJYSnfD0FFKQ
    Copy to Clipboard Toggle word wrap

  5. 선택 사항: 기본 영역을 삭제합니다.

    중요

    데이터를 저장하기 위해 기본 영역 및 영역 그룹을 사용하는 경우 기본 영역 및 해당 풀을 삭제하지 마십시오.

    예제

    [ceph: root@host04 /]# radosgw-admin zone rm --rgw-zone=default
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.log default.rgw.log --yes-i-really-really-mean-it
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.meta default.rgw.meta --yes-i-really-really-mean-it
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.control default.rgw.control --yes-i-really-really-mean-it
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.data.root default.rgw.data.root --yes-i-really-really-mean-it
    [ceph: root@host04 /]# ceph osd pool rm default.rgw.gc default.rgw.gc --yes-i-really-really-mean-it
    Copy to Clipboard Toggle word wrap

  6. Ceph 구성 데이터베이스를 업데이트합니다.

    구문

    ceph config set client.rgw.SERVICE_NAME rgw_realm REALM_NAME
    ceph config set client.rgw.SERVICE_NAME rgw_zonegroup ZONE_GROUP_NAME
    ceph config set client.rgw.SERVICE_NAME rgw_zone SECONDARY_ZONE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm test_realm
    [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup us
    [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone us-east-2
    Copy to Clipboard Toggle word wrap

  7. 변경 사항을 커밋합니다.

    구문

    radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  8. cephadm 쉘 외부에서 스토리지 클러스터 및 프로세스의 FSID를 가져옵니다.

    예제

    [root@host04 ~]#  systemctl list-units | grep ceph
    Copy to Clipboard Toggle word wrap

  9. Ceph Object Gateway 데몬을 시작합니다.

    구문

    systemctl start ceph-FSID@DAEMON_NAME
    systemctl enable ceph-FSID@DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host04 ~]# systemctl start ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
    [root@host04 ~]# systemctl enable ceph-62a081a6-88aa-11eb-a367-001a4a000672@rgw.test_realm.us-east-2.host04.ahdtsw.service
    Copy to Clipboard Toggle word wrap

5.5. 아카이브 영역 구성

참고

영역을 아카이브로 구성하기 전에 영역이 있는지 확인합니다. 영역이 없으면 기본 영역/zonegroups의 아카이브 영역을 통해 데이터를 저장할 수 없습니다.

중요

Red Hat Ceph Storage 7.0의 오브젝트 스토리지 아카이브 영역은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있으며 Red Hat은 해당 기능을 프로덕션용으로 사용하지 않는 것이 좋습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.

Object Storage 아카이브 영역 기능을 사용하여 Red Hat Ceph Storage에 상주하는 아카이브 오브젝트 데이터.

아카이브 영역은 Ceph Object Gateway의 다중 사이트 복제 및 S3 오브젝트 버전 관리 기능을 사용합니다. 아카이브 영역은 production 파일에서 삭제된 경우에도 사용 가능한 모든 오브젝트의 모든 버전을 유지합니다.

아카이브 영역에는 아카이브 영역과 연결된 게이트웨이를 통해서만 제거할 수 있는 S3 오브젝트 버전의 기록이 있습니다. 모든 데이터 업데이트 및 메타데이터를 캡처하여 S3 오브젝트 버전으로 통합합니다.

아카이브 영역에 대한 버킷 세분화된 복제는 아카이브 영역을 생성한 후 사용할 수 있습니다.

버킷 라이프사이클 정책을 통해 아카이브 영역의 스토리지 공간 사용량을 제어할 수 있습니다. 여기서 오브젝트에서 유지하려는 버전 수를 정의할 수 있습니다.

아카이브 영역은 논리 또는 물리적 오류로부터 데이터를 보호하는 데 도움이 됩니다. 프로덕션 영역에서 버킷을 실수로 삭제하는 등 논리적 오류에서 사용자를 저장할 수 있습니다. 또한 완전한 프로덕션 사이트 장애와 같이 대규모 하드웨어 오류에서 데이터를 저장할 수 있습니다. 또한, 이 복사본은 immutable copy를 제공하는데 도움이 될 수 있으며, 이 복사본은 Cryostat 보호 전략을 구축하는 데 도움이 될 수 있습니다.

버킷 세분화된 복제를 구현하려면 동기화 정책 명령을 사용하여 정책을 활성화 및 비활성화합니다. 자세한 내용은 동기화 정책 그룹 생성동기화 정책 그룹 수정 을 참조하십시오.

참고

동기화 정책 그룹 프로시저를 사용하는 것은 선택 사항이며 버킷 세분화된 복제에서 활성화 및 비활성화만 사용해야 합니다. 버킷 세분화된 복제 없이 아카이브 영역을 사용하려면 동기화 정책 절차를 사용할 필요가 없습니다.

단일 사이트에서 스토리지 클러스터를 마이그레이션하려면 단일 사이트 시스템을 다중 사이트로 마이그레이션 을 참조하십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.
  • Ceph Object Gateway 소프트웨어 설치.

프로세스

  • 새 영역을 생성하는 동안 아카이브 계층을 사용하여 아카이브 영역을 구성합니다.

    구문

    $ radosgw-admin zone create --rgw-zonegroup={ZONE_GROUP_NAME} --rgw-zone={ZONE_NAME} --endpoints={http://FQDN:PORT},{http://FQDN:PORT} --tier-type=archive
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=us --rgw-zone=us-east --endpoints={http://example.com:8080} --tier-type=archive
    Copy to Clipboard Toggle word wrap

  • 아카이브 영역에서는 기본 영역에서만 동기화하고 기간 업데이트 커밋을 수행하도록 아카이브 영역을 수정합니다.

    구문

    $ radosgw-admin zone modify --rgw-zone archive --sync_from primary --sync_from_all false --sync-from-rm secondary
    
    $ radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

참고

아카이브 영역의 omap olh 항목을 고려하여 max_objs_per_shard 를 50K로 줄이는 것이 좋습니다. 이렇게 하면 큰 omap 경고를 방지하기 위해 버킷 인덱스 shard 오브젝트당 omap 항목 수를 확인하는 데 도움이 됩니다.

예를 들면 다음과 같습니다.

$ ceph config set client.rgw rgw_max_objs_per_shard 50000
Copy to Clipboard Toggle word wrap

5.5.1. 아카이브 영역에서 오브젝트 삭제

S3 라이프사이클 정책 확장을 사용하여 < ArchiveZone > 요소 내의 오브젝트를 삭제할 수 있습니다.

중요

아카이브 영역 오브젝트는 expiration 라이프사이클 정책 규칙을 사용하여만 삭제할 수 있습니다.

  • &lt ;Rule > 섹션에 < ArchiveZone > 요소가 포함된 경우 해당 규칙은 아카이브 영역에서 실행되며 아카이브 영역에서 실행되는 유일한 규칙입니다.
  • < ArchiveZone&gt;으로 표시된 규칙은 아카이브가 아닌 영역에서 실행되지 않습니다.

라이프사이클 정책 내의 규칙에 따라 삭제할 오브젝트와 시기가 결정됩니다. 라이프사이클 생성 및 관리에 대한 자세한 내용은 Bucket 라이프사이클을 참조하십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.
  • Ceph Object Gateway 소프트웨어 설치.

프로세스

  1. < ArchiveZone> 라이프사이클 정책 규칙을 설정합니다. 라이프사이클 정책 생성에 대한 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드라이프사이클 관리 정책 생성 섹션을 참조하십시오.

    예제

    <?xml version="1.0" ?>
    <LifecycleConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
            <Rule>
                    <ID>delete-1-days-az</ID>
                    <Filter>
    		  <Prefix></Prefix>
    		  <ArchiveZone />   
    1
    
                    </Filter>
                    <Status>Enabled</Status>
                    <Expiration>
                            <Days>1</Days>
                    </Expiration>
            </Rule>
    </LifecycleConfiguration>
    Copy to Clipboard Toggle word wrap

  2. 선택 사항: 특정 라이프사이클 정책에 아카이브 영역 규칙이 포함되어 있는지 확인합니다.

    구문

    radosgw-admin lc get --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin lc get --bucket test-bkt
    
    {
        "prefix_map": {
            "": {
                "status": true,
                "dm_expiration": true,
                "expiration": 0,
                "noncur_expiration": 2,
                "mp_expiration": 0,
                "transitions": {},
                "noncur_transitions": {}
            }
        },
        "rule_map": [
            {
                "id": "Rule 1",
                "rule": {
                    "id": "Rule 1",
                    "prefix": "",
                    "status": "Enabled",
                    "expiration": {
                        "days": "",
                        "date": ""
                    },
                    "noncur_expiration": {
                        "days": "2",
                        "date": ""
                    },
                    "mp_expiration": {
                        "days": "",
                        "date": ""
                    },
                    "filter": {
                        "prefix": "",
                        "obj_tags": {
                            "tagset": {}
                        },
                        "archivezone": ""   
    1
    
                    },
                    "transitions": {},
                    "noncur_transitions": {},
                    "dm_expiration": true
                }
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

    1 1
    아카이브 영역 규칙입니다. 다음은 아카이브 영역 규칙이 있는 라이프사이클 정책의 예입니다.
  3. Ceph Object Gateway 사용자가 삭제되면 해당 사용자가 소유한 아카이브 사이트의 버킷에 액세스할 수 없습니다. 해당 버킷을 다른 Ceph Object Gateway 사용자에게 연결하여 데이터에 액세스합니다.

    구문

     radosgw-admin bucket link --uid NEW_USER_ID --bucket BUCKET_NAME --yes-i-really-mean-it
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --uid arcuser1 --bucket arc1-deleted-da473fbbaded232dc5d1e434675c1068 --yes-i-really-mean-it
    Copy to Clipboard Toggle word wrap

5.5.2. 페일오버 및 재해 복구

다양한 페일오버 및 재해 시나리오에서 데이터를 복구합니다. 요구 사항에 따라 다음 절차를 사용하십시오.

  • 재해 복구를 위해 보조 영역에 장애 조치(failover)가 있는 기본 영역 실패
  • 진행 중인 I/O를 사용하여 아카이브 영역 동기화를 기본 영역에서 보조 영역으로 전환
  • 아카이브 영역 동기화는 기본 영역 실패와 기본 영역 장애와 함께 기본 영역에서만 동기화됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.
  • Ceph Object Gateway 소프트웨어 설치.

프로세스

  1. 보조 영역을 기본 및 기본 영역으로 설정합니다. 예를 들면 다음과 같습니다.

    구문

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --master --default
    Copy to Clipboard Toggle word wrap

    기본적으로 Ceph Object Gateway는 활성-활성 구성으로 실행됩니다. 클러스터가 활성-패시브 구성에서 실행되도록 구성된 경우 보조 영역은 읽기 전용 영역입니다. 영역이 쓰기 작업을 수신할 수 있도록 --read-only 상태를 제거합니다. 예를 들면 다음과 같습니다.

    구문

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --master --default --read-only=false
    Copy to Clipboard Toggle word wrap

  2. 변경 사항을 적용하려면 기간을 업데이트합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  3. Ceph Object Gateway를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

      이전 기본 영역이 복구되면 작업을 되돌립니다.

  4. 복구된 영역에서 현재 기본 영역에서 영역을 가져옵니다.

    구문

    radosgw-admin realm pull --url=URL_TO_PRIMARY_ZONE_GATEWAY \
                                --access-key=ACCESS_KEY --secret=SECRET_KEY
    Copy to Clipboard Toggle word wrap

  5. 복구 영역을 기본 및 기본 영역으로 설정합니다.

    구문

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --master --default
    Copy to Clipboard Toggle word wrap

  6. 변경 사항을 적용하려면 기간을 업데이트합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  7. 복구된 영역에서 Ceph Object Gateway를 다시 시작합니다.

    구문

    ceph orch restart SERVICE_TYPE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph orch restart rgw
    Copy to Clipboard Toggle word wrap

  8. 보조 영역이 읽기 전용 구성이어야 하는 경우 보조 영역을 업데이트합니다.

    구문

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --read-only
    radosgw-admin zone modify --rgw-zone=ZONE_NAME --read-only
    Copy to Clipboard Toggle word wrap

    1. 변경 사항을 적용하려면 기간을 업데이트합니다.

      예제

      [ceph: root@host01 /]# radosgw-admin period update --commit
      Copy to Clipboard Toggle word wrap

    2. 보조 영역에서 Ceph Object Gateway를 다시 시작합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

5.5.2.2. I/O를 사용하여 기본에서 보조로 아카이브 영역 동기화 전환

프로세스

  1. 동기화 소스를 보조 영역으로 전환합니다.

    구문

    radosgw-admin zone modify --rgw-zone archive --sync_from secondary --sync_from_all false --sync-from-rm primary radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  2. 아카이브 영역에서 동기화 상태 및 데이터 일관성을 확인합니다.
  3. 동기화 소스를 다시 기본 영역으로 전환합니다.

    구문

    radosgw-admin zone modify --rgw-zone archive --sync_from primary --sync_from_all false --sync-from-rm secondary radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  4. 전환 후 아카이브 영역에서 동기화 상태 및 데이터 일관성을 확인합니다. 결과는 다음과 같습니다.

    • 아카이브 영역은 첫 번째 수정 후 보조 영역에서 동기화되기 시작합니다.
    • 데이터 일관성은 전환 전체에서 유지됩니다.
    • 기본 영역으로 다시 전환하면 아카이브 영역이 데이터 손실 또는 손상 없이 기본 영역에서 동기화됩니다.
    • 동기화는 모든 영역에서 일관되게 유지됩니다.

프로세스

  1. 아카이브 영역이 기본 영역에서만 동기화되도록 설정되어 있는지 확인합니다.
  2. 기본 영역 게이트웨이를 중지하여 기본 영역 실패를 시뮬레이션합니다.
  3. 보조 영역에 대한 장애 조치(failover)를 수행하고 기간 업데이트 커밋을 수행합니다.
  4. 아카이브 영역의 동기화 상태를 확인합니다.
  5. 약 30분 정도의 시간 간격을 게시하고 기본 영역 게이트웨이를 다시 시작합니다.
  6. 아카이브 영역이 기본 영역의 동기화를 다시 시작하는지 확인합니다. 결과는 다음과 같습니다.

    • 아카이브 영역은 기본 영역이 실패할 때 동기화를 중지합니다.
    • 기본 영역을 복원하면 아카이브 영역이 기본 영역의 동기화를 자동으로 다시 시작합니다.
    • 데이터 무결성 및 동기화 상태는 프로세스 전체에서 유지됩니다.

5.6. 동일한 스토리지 클러스터에서 여러 영역 구성

동일한 스토리지 클러스터에서 여러 영역을 구성할 수 있습니다. 이는 다중 사이트의 고급 사용 사례입니다. 동일한 스토리지 클러스터에 여러 영역을 구성하면 로컬 영역을 사용하여 로컬 Ceph Object Gateway 클라이언트 트래픽뿐만 아니라 보조 사이트에 복제될 데이터를 위한 복제 영역을 처리할 수 있습니다.

참고

Red Hat은 각 영역에 고유한 Ceph Object Gateway를 사용하는 것이 좋습니다.

사전 요구 사항

  • 스토리지 클러스터에서 두 개의 Red Hat Ceph Storage 데이터 센터가 실행 중입니다.
  • 스토리지 클러스터의 각 데이터 센터의 액세스 키 및 시크릿 키입니다.
  • 모든 Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • 각 데이터 센터에는 자체 로컬 영역이 있습니다. 두 사이트에서 복제하는 영역을 공유합니다.

프로세스

  1. 스토리지 클러스터의 첫 번째 데이터 센터에 하나의 로컬 영역을 생성합니다.

    구문

    radosgw-admin realm create --rgw-realm=REALM_NAME --default
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=ldc1 --default
    Copy to Clipboard Toggle word wrap

  2. 첫 번째 데이터 센터에 하나의 로컬 마스터 영역 그룹을 생성합니다.

    구문

    radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_NODE_NAME:80 --rgw-realm=REALM_NAME --master --default
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=ldc1zg --endpoints=http://rgw1:80 --rgw-realm=ldc1 --master --default
    Copy to Clipboard Toggle word wrap

  3. 첫 번째 데이터 센터에서 하나의 로컬 영역을 생성합니다.

    구문

    radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME --master --default --endpoints=HTTP_FQDN[,HTTP_FQDN]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=ldc1zg --rgw-zone=ldc1z --master --default --endpoints=http://rgw.example.com
    Copy to Clipboard Toggle word wrap

  4. 기간을 커밋합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  5. 적절한 영역 및 영역을 사용하여 Ceph Object Gateway 데몬을 배포하거나 구성 데이터베이스를 업데이트할 수 있습니다.

    • 배치 사양을 사용하여 Ceph Object Gateway를 배포합니다.

      구문

      ceph orch apply rgw SERVICE_NAME --realm=REALM_NAME --zone=ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch apply rgw rgw --realm=ldc1 --zone=ldc1z --placement="1 host01"
      Copy to Clipboard Toggle word wrap

    • Ceph 구성 데이터베이스를 업데이트합니다.

      구문

      ceph config set client.rgw.SERVICE_NAME rgw_realm REALM_NAME
      ceph config set client.rgw.SERVICE_NAME rgw_zonegroup ZONE_GROUP_NAME
      ceph config set client.rgw.SERVICE_NAME rgw_zone ZONE_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm ldc1
      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup ldc1zg
      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone ldc1z
      Copy to Clipboard Toggle word wrap

  6. Ceph Object Gateway를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

  7. 스토리지 클러스터의 두 번째 데이터 센터에 하나의 로컬 영역을 생성합니다.

    구문

    radosgw-admin realm create --rgw-realm=REALM_NAME --default
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin realm create --rgw-realm=ldc2 --default
    Copy to Clipboard Toggle word wrap

  8. 두 번째 데이터 센터에 하나의 로컬 마스터 영역 그룹을 생성합니다.

    구문

    radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME --endpoints=http://RGW_NODE_NAME:80 --rgw-realm=REALM_NAME --master --default
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin zonegroup create --rgw-zonegroup=ldc2zg --endpoints=http://rgw2:80 --rgw-realm=ldc2 --master --default
    Copy to Clipboard Toggle word wrap

  9. 두 번째 데이터 센터에서 하나의 로컬 영역을 생성합니다.

    구문

    radosgw-admin zone create --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME --master --default --endpoints=HTTP_FQDN[, HTTP_FQDN]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin zone create --rgw-zonegroup=ldc2zg --rgw-zone=ldc2z --master --default --endpoints=http://rgw.example.com
    Copy to Clipboard Toggle word wrap

  10. 기간을 커밋합니다.

    예제

    [ceph: root@host04 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  11. 적절한 영역 및 영역을 사용하여 Ceph Object Gateway 데몬을 배포하거나 구성 데이터베이스를 업데이트할 수 있습니다.

    • 배치 사양을 사용하여 Ceph Object Gateway를 배포합니다.

      구문

      ceph orch apply rgw SERVICE_NAME --realm=REALM_NAME --zone=ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch apply rgw rgw --realm=ldc2 --zone=ldc2z --placement="1 host01"
      Copy to Clipboard Toggle word wrap

    • Ceph 구성 데이터베이스를 업데이트합니다.

      구문

      ceph config set client.rgw.SERVICE_NAME rgw_realm REALM_NAME
      ceph config set client.rgw.SERVICE_NAME rgw_zonegroup ZONE_GROUP_NAME
      ceph config set client.rgw.SERVICE_NAME rgw_zone ZONE_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm ldc2
      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup ldc2zg
      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone ldc2z
      Copy to Clipboard Toggle word wrap

  12. Ceph Object Gateway를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host04 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

  13. 스토리지 클러스터의 첫 번째 데이터 센터에 복제 영역을 생성합니다.

    구문

    radosgw-admin realm create --rgw-realm=REPLICATED_REALM_1 --default
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=rdc1 --default
    Copy to Clipboard Toggle word wrap

    --default 플래그를 사용하여 기본 사이트에서 복제된 영역을 기본값으로 설정합니다.

  14. 첫 번째 데이터 센터의 마스터 영역 그룹을 생성합니다.

    구문

    radosgw-admin zonegroup create --rgw-zonegroup=RGW_ZONE_GROUP --endpoints=http://_RGW_NODE_NAME:80 --rgw-realm=_RGW_REALM_NAME --master --default
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=rdc1zg --endpoints=http://rgw1:80 --rgw-realm=rdc1 --master --default
    Copy to Clipboard Toggle word wrap

  15. 첫 번째 데이터 센터에 마스터 영역을 생성합니다.

    구문

    radosgw-admin zone create --rgw-zonegroup=RGW_ZONE_GROUP --rgw-zone=_MASTER_RGW_NODE_NAME --master --default --endpoints=HTTP_FQDN[,HTTP_FQDN]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zone create --rgw-zonegroup=rdc1zg --rgw-zone=rdc1z --master --default --endpoints=http://rgw.example.com
    Copy to Clipboard Toggle word wrap

  16. 동기화 사용자를 생성하고 다중 사이트의 마스터 영역에 시스템 사용자를 추가합니다.

    구문

    radosgw-admin user create --uid="SYNCHRONIZATION_USER" --display-name="Synchronization User" --system
    radosgw-admin zone modify --rgw-zone=RGW_ZONE --access-key=ACCESS_KEY --secret=SECRET_KEY
    Copy to Clipboard Toggle word wrap

    예제

    radosgw-admin user create --uid="synchronization-user" --display-name="Synchronization User" --system
    [ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=rdc1zg --access-key=3QV0D6ZMMCJZMSCXJ2QJ --secret=VpvQWcsfI9OPzUCpR4kynDLAbqa1OIKqRB6WEnH8
    Copy to Clipboard Toggle word wrap

  17. 기간을 커밋합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  18. 적절한 영역 및 영역을 사용하여 Ceph Object Gateway 데몬을 배포하거나 구성 데이터베이스를 업데이트할 수 있습니다.

    • 배치 사양을 사용하여 Ceph Object Gateway를 배포합니다.

      구문

      ceph orch apply rgw SERVICE_NAME --realm=REALM_NAME --zone=ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch apply rgw rgw --realm=rdc1 --zone=rdc1z --placement="1 host01"
      Copy to Clipboard Toggle word wrap

    • Ceph 구성 데이터베이스를 업데이트합니다.

      구문

      ceph config set client.rgw.SERVICE_NAME  rgw_realm REALM_NAME
      ceph config set client.rgw.SERVICE_NAME  rgw_zonegroup ZONE_GROUP_NAME
      ceph config set client.rgw.SERVICE_NAME  rgw_zone ZONE_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm rdc1
      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup rdc1zg
      [ceph: root@host01 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone rdc1z
      Copy to Clipboard Toggle word wrap

  19. Ceph Object Gateway를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

  20. 두 번째 데이터 센터에서 복제 영역을 가져옵니다.

    구문

    radosgw-admin realm pull --url=https://tower-osd1.cephtips.com --access-key=ACCESS_KEY --secret-key=SECRET_KEY
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin realm pull --url=https://tower-osd1.cephtips.com --access-key=3QV0D6ZMMCJZMSCXJ2QJ --secret-key=VpvQWcsfI9OPzUCpR4kynDLAbqa1OIKqRB6WEnH8
    Copy to Clipboard Toggle word wrap

  21. 첫 번째 데이터 센터에서 기간을 가져옵니다.

    구문

    radosgw-admin period pull --url=https://tower-osd1.cephtips.com --access-key=ACCESS_KEY --secret-key=SECRET_KEY
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin period pull --url=https://tower-osd1.cephtips.com --access-key=3QV0D6ZMMCJZMSCXJ2QJ --secret-key=VpvQWcsfI9OPzUCpR4kynDLAbqa1OIKqRB6WEnH8
    Copy to Clipboard Toggle word wrap

  22. 두 번째 데이터 센터에 보조 영역을 생성합니다.

    구문

    radosgw-admin zone create --rgw-zone=RGW_ZONE --rgw-zonegroup=RGW_ZONE_GROUP --endpoints=https://tower-osd4.cephtips.com --access-key=_ACCESS_KEY --secret-key=SECRET_KEY
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin zone create --rgw-zone=rdc2z --rgw-zonegroup=rdc1zg --endpoints=https://tower-osd4.cephtips.com --access-key=3QV0D6ZMMCJZMSCXJ2QJ --secret-key=VpvQWcsfI9OPzUCpR4kynDLAbqa1OIKqRB6WEnH8
    Copy to Clipboard Toggle word wrap

  23. 기간을 커밋합니다.

    예제

    [ceph: root@host04 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  24. 적절한 영역 및 영역을 사용하여 Ceph Object Gateway 데몬을 배포하거나 구성 데이터베이스를 업데이트할 수 있습니다.

    • 배치 사양을 사용하여 Ceph Object Gateway를 배포합니다.

      구문

      ceph orch apply rgw SERVICE_NAME --realm=REALM_NAME --zone=ZONE_NAME --placement="NUMBER_OF_DAEMONS HOST_NAME_1 HOST_NAME_2"
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# ceph orch apply rgw rgw --realm=rdc1 --zone=rdc2z --placement="1 host04"
      Copy to Clipboard Toggle word wrap

    • Ceph 구성 데이터베이스를 업데이트합니다.

      구문

      ceph config set client.rgw.SERVICE_NAME rgw_realm REALM_NAME
      ceph config set client.rgw.SERVICE_NAME rgw_zonegroup ZONE_GROUP_NAME
      ceph config set client.rgw.SERVICE_NAME rgw_zone ZONE_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_realm rdc1
      [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zonegroup rdc1zg
      [ceph: root@host04 /]# ceph config set client.rgw.rgwsvcid.mons-1.jwgwwp rgw_zone rdc2z
      Copy to Clipboard Toggle word wrap

  25. Ceph Object Gateway를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host02 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host04 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

  26. 두 번째 데이터 센터의 엔드포인트에 root 로 로그인합니다.
  27. 마스터 영역에서 동기화 상태를 확인합니다.

    구문

    radosgw-admin sync status
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin sync status
              realm 59762f08-470c-46de-b2b1-d92c50986e67 (ldc2)
          zonegroup 7cf8daf8-d279-4d5c-b73e-c7fd2af65197 (ldc2zg)
               zone 034ae8d3-ae0c-4e35-8760-134782cb4196 (ldc2z)
      metadata sync no sync (zone is master)
    Copy to Clipboard Toggle word wrap

  28. 첫 번째 데이터 센터의 엔드포인트에 root 로 로그인합니다.
  29. replication-synchronization 영역의 동기화 상태를 확인합니다.

    구문

    radosgw-admin sync status --rgw-realm RGW_REALM_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync status --rgw-realm rdc1
              realm 73c7b801-3736-4a89-aaf8-e23c96e6e29d (rdc1)
          zonegroup d67cc9c9-690a-4076-89b8-e8127d868398 (rdc1zg)
               zone 67584789-375b-4d61-8f12-d1cf71998b38 (rdc2z)
      metadata sync syncing
                    full sync: 0/64 shards
                    incremental sync: 64/64 shards
                    metadata is caught up with master
          data sync source: 705ff9b0-68d5-4475-9017-452107cec9a0 (rdc1z)
                            syncing
                            full sync: 0/128 shards
                            incremental sync: 128/128 shards
                            data is caught up with source
              realm 73c7b801-3736-4a89-aaf8-e23c96e6e29d (rdc1)
          zonegroup d67cc9c9-690a-4076-89b8-e8127d868398 (rdc1zg)
               zone 67584789-375b-4d61-8f12-d1cf71998b38 (rdc2z)
      metadata sync syncing
                    full sync: 0/64 shards
                    incremental sync: 64/64 shards
                    metadata is caught up with master
          data sync source: 705ff9b0-68d5-4475-9017-452107cec9a0 (rdc1z)
                            syncing
                            full sync: 0/128 shards
                            incremental sync: 128/128 shards
                            data is caught up with source
    Copy to Clipboard Toggle word wrap

  30. 로컬 사이트에 데이터를 저장하고 액세스하려면 로컬 영역에 대한 사용자를 생성합니다.

    구문

    radosgw-admin user create --uid="LOCAL_USER" --display-name="Local user" --rgw-realm=_REALM_NAME --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host04 /]# radosgw-admin user create --uid="local-user" --display-name="Local user" --rgw-realm=ldc1 --rgw-zonegroup=ldc1zg --rgw-zone=ldc1z
    Copy to Clipboard Toggle word wrap

    중요

    기본적으로 사용자는 기본 영역에 생성됩니다. 사용자가 로컬 영역의 데이터에 액세스하려면 radosgw-admin 명령에 --rgw-realm 인수가 필요합니다.

5.7. 다중 사이트 동기화 정책 사용

스토리지 관리자는 버킷 수준에서 다중 사이트 동기화 정책을 사용하여 다른 영역의 버킷 간 데이터 이동을 제어할 수 있습니다. 이러한 정책을 버킷 세분화 동기화 정책이라고 합니다. 이전에는 영역 내의 모든 버킷이 대칭적으로 처리되었습니다. 즉, 각 영역에 지정된 버킷의 미러 사본이 포함되어 있으며 모든 영역에서 버킷 복사본이 동일했습니다. 동기화 프로세스에서는 버킷 동기화 소스 및 버킷 동기화 대상이 동일한 버킷을 참조한다고 가정합니다.

중요

버킷 동기화 정책은 데이터에만 적용되며 버킷 동기화 정책의 존재와 관계없이 다중 사이트의 모든 영역에 메타데이터가 동기화됩니다. 버킷 동기화 정책이 허용 되거나 금지 될 때 생성, 수정 또는 삭제된 오브젝트는 정책이 적용되면 자동으로 동기화되지 않습니다. 버킷 동기화 실행 명령을 실행하여 이러한 오브젝트를 동기화합니다.

중요

zonegroup 수준에서 여러 동기화 정책이 정의되어 있는 경우 언제든지 하나의 정책만 활성화될 수 있습니다. 필요한 경우 정책을 전환할 수 있습니다.

동기화 정책은 이전 영역 그룹 coarse 구성을 대체합니다(sync_from*). 동기화 정책은 영역 그룹 수준에서 구성할 수 있습니다. 구성된 경우 영역 그룹 수준에서 이전 스타일 구성을 대체하지만 버킷 수준에서 구성할 수도 있습니다.

중요

버킷 동기화 정책은 아카이브 영역에 적용할 수 있습니다. 아카이브 영역에서의 이동은 양방향이 아니며 모든 오브젝트를 활성 영역에서 아카이브 영역으로 이동할 수 있습니다. 그러나 아카이브 영역은 읽기 전용이므로 아카이브 영역에서 활성 영역으로 오브젝트를 이동할 수 없습니다.

영역 그룹의 버킷 동기화 정책의 예

[ceph: root@host01 /]# radosgw-admin sync info --bucket=buck
{
    "sources": [
        {
            "id": "pipe1",
            "source": {
                "zone": "us-east",
                "bucket": "buck:115b12b3-....4409.1"
            },
            "dest": {
                "zone": "us-west",
                "bucket": "buck:115b12b3-....4409.1"
            },
           ...
        }
    ],
    "dests": [
        {
            "id": "pipe1",
            "source": {
                "zone": "us-west",
                "bucket": "buck:115b12b3-....4409.1"
            },
            "dest": {
                "zone": "us-east",
                "bucket": "buck:115b12b3-....4409.1"
            },
           ...
        },
        {
            "id": "pipe1",
            "source": {
                "zone": "us-west",
                "bucket": "buck:115b12b3-....4409.1"
            },
            "dest": {
                "zone": "us-west-2",
                "bucket": "buck:115b12b3-....4409.1"
            },
           ...
        }
    ],
    ...
}
Copy to Clipboard Toggle word wrap

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터입니다.
  • Ceph Monitor 노드에 대한 루트 수준 액세스.
  • Ceph Object Gateway 소프트웨어 설치.

5.7.1. 다중 사이트 동기화 정책 그룹 상태

동기화 정책에서는 데이터 흐름 구성 목록을 포함할 수 있는 여러 그룹과 파이프 구성 목록을 정의할 수 있습니다. data-flow는 다양한 영역 간 데이터 흐름을 정의합니다. 대칭 데이터 흐름은 여러 영역에서 서로 데이터를 동기화하는 대칭 데이터 흐름을 정의할 수 있으며 방향 데이터 흐름을 정의할 수 있으며 데이터가 한 영역에서 다른 영역으로 이동하는 방향성 데이터 흐름을 정의할 수 있습니다.

파이프는 이러한 데이터 흐름을 사용할 수 있는 실제 버킷과 소스 오브젝트 접두사와 같이 연결된 속성을 정의합니다.

동기화 정책 그룹은 다음 세 가지 상태가 될 수 있습니다.

  • 활성화된 Cryostat- Cryostatsync가 허용되고 활성화됩니다.
  • 허용되는 Cryostat- Cryostatsync가 허용됩니다.
  • 이 그룹에서 정의한 대로 사용 안 함으로 사용 안 함으로 사용 안 함

영역이 복제되면 동기화 정책을 사용하여 특정 버킷의 복제를 비활성화할 수 있습니다. 다음은 정책 충돌을 해결하기 위해 따라야 하는 의미 체계입니다.

Expand
zonegroupbucket결과

enabled

enabled

enabled

enabled

허용됨

enabled

enabled

forbidden

비활성화됨

허용됨

enabled

enabled

허용됨

허용됨

비활성화됨

허용됨

forbidden

비활성화됨

forbidden

enabled

비활성화됨

forbidden

허용됨

비활성화됨

forbidden

forbidden

비활성화됨

모든 동기화 쌍(SOURCE_ZONE,SOURCE_BUCKET)(DESTINATION_ZONE,DESTINATION_BUCKET)에 반영되도록 설정된 여러 그룹 정책의 경우 다음 순서로 다음 규칙이 적용됩니다.

  • 하나의 동기화 정책이 금지된 경우에도 동기화가 비활성화됩니다.
  • 동기화를 허용하려면 하나 이상의 정책을 활성화해야 합니다.

이 그룹의 동기화 상태는 다른 그룹을 덮어쓸 수 있습니다.

정책은 버킷 수준에서 정의할 수 있습니다. 버킷 수준 동기화 정책은 zonegroup 정책의 데이터 흐름을 상속하고 zonegroup에서 허용하는 하위 집합만 정의할 수 있습니다.

정책의 와일드카드 영역 및 와일드카드 버킷 매개변수는 모든 관련 영역 또는 모든 관련 버킷을 정의합니다. 버킷 정책의 컨텍스트에서는 현재 버킷 인스턴스를 의미합니다. 전체 영역이 미러링된 재해 복구 구성에서는 버킷에 아무것도 구성할 필요가 없습니다. 그러나 세분화된 버킷 동기화의 경우 (예: 와일드카드를 사용하여) zonegroup 수준에서 해당 항목을 허용(예: 와일드카드를 사용하여) 허용(status=allowed)하여 파이프를 동기화하도록 구성하는 것이 좋습니다. 그러나 버킷 수준(status=enabled)에서만 특정 동기화를 활성화합니다. 필요한 경우 버킷 수준의 정책은 데이터 이동을 특정 관련 영역으로 제한할 수 있습니다.

중요

zonegroup 정책에 대한 모든 변경 사항을 zonegroup 마스터 영역에 적용해야 하며 기간 업데이트 및 커밋이 필요합니다. 버킷 정책 변경 사항을 zonegroup 마스터 영역에 적용해야 합니다. Ceph Object Gateway는 이러한 변경 사항을 동적으로 처리합니다.

S3 버킷 복제 API

S3 버킷 복제 API가 구현되고 사용자가 다양한 버킷 간에 복제 규칙을 생성할 수 있습니다. AWS 복제 기능은 동일한 영역 내에서 버킷 복제를 허용하지만 Ceph Object Gateway에서는 현재 이를 허용하지 않습니다. 그러나 Ceph Object Gateway API에는 사용자가 특정 버킷을 동기화할 영역을 선택할 수 있는 Zone 배열도 추가되었습니다.

5.7.2. 현재 정책 검색

get 명령을 사용하여 현재 zonegroup 동기화 정책 또는 특정 버킷 정책을 검색할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터입니다.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  • 현재 zonegroup 동기화 정책 또는 버킷 정책을 검색합니다. 특정 버킷 정책을 검색하려면 --bucket 옵션을 사용합니다.

    구문

    radosgw-admin sync policy get --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync policy get --bucket=mybucket
    Copy to Clipboard Toggle word wrap

5.7.3. 동기화 정책 그룹 생성

현재 영역 그룹 또는 특정 버킷에 대한 동기화 정책 그룹을 생성할 수 있습니다.

버킷에 대한 동기화 정책을 생성할 때 금지 없이 변경된 동기화 정책 그룹에 대한 동기화 정책을 생성할 때 동기화 프로세스를 완료하려면 수동 업데이트가 필요할 수 있습니다.

예를 들어 정책이 금지 되면 버킷1 에 데이터가 기록되면 정책이 활성화된 상태로 변경된 후 데이터가 영역 간에 올바르게 동기화되지 않을 수 있습니다. 변경 사항을 올바르게 동기화하려면 동기화 정책에서 버킷 동기화 run 명령을 실행합니다. 이 단계는 정책이 금지 될 때 버킷을 재하드하는 경우에도 필요합니다. 이 경우 정책을 활성화한 후 버킷 동기화 실행 명령을 사용해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터입니다.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.
  • 아카이브 영역에 대해 생성할 때 동기화 정책 그룹 전에 아카이브 영역이 생성되었는지 확인합니다.

프로세스

  1. 동기화 정책 그룹 또는 버킷 정책을 생성합니다. 버킷 정책을 생성하려면 --bucket 옵션을 사용합니다.

    구문

    radosgw-admin sync group create --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled | allowed | forbidden
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group create --group-id=mygroup1 --status=enabled
    Copy to Clipboard Toggle word wrap

  2. 선택 사항: 버킷 세분화된 복제에 대한 동기화 프로세스를 수동으로 완료합니다.

    참고

    이 단계는 정책이 기록된 데이터가 있거나 정책이 금지된 경우 버킷 세분화된 복제와 함께 아카이브 영역의 일부로 를 사용할 때 사용해야 합니다.

    구문

    radosgw-admin bucket sync run
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket sync run
    Copy to Clipboard Toggle word wrap

5.7.4. 동기화 정책 그룹 수정

현재 영역 그룹 또는 특정 버킷의 기존 동기화 정책 그룹을 수정할 수 있습니다.

버킷에 대한 동기화 정책을 수정하는 경우 동기화 프로세스를 완료 하려면 수동 업데이트가 필요할 수 있습니다.

예를 들어 정책이 금지 되면 버킷1 에 데이터가 기록되면 정책이 활성화된 상태로 변경된 후 데이터가 영역 간에 올바르게 동기화되지 않을 수 있습니다. 변경 사항을 올바르게 동기화하려면 동기화 정책에서 버킷 동기화 run 명령을 실행합니다. 이 단계는 정책이 금지 될 때 버킷을 재하드하는 경우에도 필요합니다. 이 경우 정책을 활성화한 후 버킷 동기화 실행 명령을 사용해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터입니다.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.
  • 아카이브 영역을 수정할 때 동기화 정책 그룹 전에 아카이브 영역이 생성되었는지 확인합니다.

프로세스

  1. 동기화 정책 그룹 또는 버킷 정책을 수정합니다. 버킷 정책을 수정하려면 --bucket 옵션을 사용합니다.

    구문

    radosgw-admin sync group modify --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled | allowed | forbidden
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group modify --group-id=mygroup1 --status=forbidden
    Copy to Clipboard Toggle word wrap

  2. 선택 사항: 버킷 세분화된 복제에 대한 동기화 프로세스를 수동으로 완료합니다.

    참고

    이 단계는 정책이 기록된 데이터가 있거나 정책이 금지된 경우 버킷 세분화된 복제와 함께 아카이브 영역의 일부로 를 사용할 때 사용해야 합니다.

    구문

    radosgw-admin bucket sync run
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket sync run
    Copy to Clipboard Toggle word wrap

5.7.5. 동기화 정책 그룹 가져오기

group get 명령을 사용하여 현재 동기화 정책 그룹을 그룹 ID로 표시하거나 특정 버킷 정책을 표시할 수 있습니다.

--bucket 옵션이 제공되지 않으면 zonegroup 수준에서 생성된 그룹이 버킷 수준의 그룹이 검색되지 않습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터입니다.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  • 현재 동기화 정책 그룹 또는 버킷 정책을 표시합니다. 특정 버킷 정책을 표시하려면 --bucket 옵션을 사용합니다.

    구문

    radosgw-admin sync group get --bucket=BUCKET_NAME --group-id=GROUP_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group get --group-id=mygroup
    Copy to Clipboard Toggle word wrap

5.7.6. 동기화 정책 그룹 제거

group remove 명령을 사용하여 그룹 ID로 현재 동기화 정책 그룹을 제거하거나 특정 버킷 정책을 제거할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터입니다.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  • 현재 동기화 정책 그룹 또는 버킷 정책을 제거합니다. 특정 버킷 정책을 제거하려면 --bucket 옵션을 사용합니다.

    구문

    radosgw-admin sync group remove --bucket=BUCKET_NAME --group-id=GROUP_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group remove --group-id=mygroup
    Copy to Clipboard Toggle word wrap

5.7.7. 동기화 흐름 생성

동기화 정책 그룹 또는 특정 버킷에 대해 두 가지 다른 유형의 흐름을 생성할 수 있습니다.

  • 직접 동기화 흐름
  • 대칭 동기화 흐름

그룹 flow create 명령은 동기화 흐름을 생성합니다. 동기화 흐름이 이미 있는 동기화 정책 그룹 또는 버킷에 대한 그룹 flow create 명령을 실행한 경우 명령은 동기화 흐름에 대한 기존 설정을 덮어쓰고 지정한 설정을 적용합니다.

Expand
옵션설명필수/선택 사항

--bucket

동기화 정책을 구성해야 하는 버킷의 이름입니다. 버킷 수준 동기화 정책에서만 사용됩니다.

선택 사항

--group-id

동기화 그룹의 ID입니다.

필수 항목

--flow-id

흐름의 ID입니다.

필수 항목

--flow-type

동기화 정책 그룹 또는 특정 버킷에 대한 흐름 유형 - 방향 또는 대칭입니다.

필수 항목

--source-zone

동기화해야 하는 소스 영역을 지정하려면 다음을 수행합니다. 동기화 그룹에 데이터를 전송하는 영역입니다. 동기화 그룹의 흐름 유형이 방향성인 경우 필요합니다.

선택 사항

--dest-zone

동기화해야 하는 대상 영역을 지정하려면 다음을 수행합니다. 동기화 그룹에서 데이터를 수신하는 영역입니다. 동기화 그룹의 흐름 유형이 방향성인 경우 필요합니다.

선택 사항

--zones

동기화 그룹의 일부인 영역입니다. 영역 언급은 발신자 영역과 수신자 영역이 모두 됩니다. 영역을 ""로 구분하여 지정합니다. 동기화 그룹의 흐름 유형이 대칭인 경우 필요합니다.

선택 사항

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  1. 방향 동기화 흐름을 생성하거나 업데이트합니다. 특정 버킷에 대한 방향 동기화 흐름을 생성하거나 업데이트하려면 --bucket 옵션을 사용합니다.

    구문

    radosgw-admin sync group flow create --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=directional --source-zone=SOURCE_ZONE --dest-zone=DESTINATION_ZONE
    Copy to Clipboard Toggle word wrap

  2. 대칭 동기화 흐름을 만들거나 업데이트합니다. 대칭 흐름 유형에 대해 여러 영역을 지정하려면 --zones 옵션에 쉼표로 구분된 목록을 사용합니다.

    구문

    radosgw-admin sync group flow create --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2
    Copy to Clipboard Toggle word wrap

    영역은 흐름에 추가해야 하는 모든 영역의 쉼표로 구분된 목록입니다.

5.7.8. 동기화 흐름 및 영역 제거

group flow remove 명령은 동기화 정책 그룹 또는 버킷에서 동기화 흐름 또는 영역을 제거합니다.

방향 흐름을 사용하는 동기화 정책 그룹 또는 버킷의 경우 그룹 흐름 제거 명령은 흐름을 제거합니다. 대칭 흐름을 사용하는 동기화 정책 그룹 또는 버킷의 경우 group flow remove 명령을 사용하여 지정된 영역을 흐름에서 제거하거나 흐름을 제거할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터입니다.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  1. 방향 동기화 흐름을 제거합니다. 특정 버킷의 방향 동기화 흐름을 제거하려면 --bucket 옵션을 사용합니다.

    구문

    radosgw-admin sync group flow remove --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=directional --source-zone=SOURCE_ZONE --dest-zone=DESTINATION_ZONE
    Copy to Clipboard Toggle word wrap

  2. 대칭 동기화 흐름에서 특정 영역을 제거합니다. 대칭 흐름에서 여러 영역을 제거하려면 --zones 옵션에 쉼표로 구분된 목록을 사용합니다.

    구문

    radosgw-admin sync group flow remove --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2
    Copy to Clipboard Toggle word wrap

  3. 대칭 동기화 흐름을 제거합니다. zonegroup 수준에서 동기화 흐름을 제거하려면 --bucket 옵션을 제거합니다.

    구문

    radosgw-admin sync group flow remove --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2
    Copy to Clipboard Toggle word wrap

5.7.9. 동기화 그룹 파이프 생성 또는 수정

스토리지 관리자는 파이프를 정의하여 구성된 데이터 흐름 및 해당 데이터 흐름과 연결된 속성을 사용할 수 있는 버킷을 지정할 수 있습니다.

동기화 그룹 pipe create 명령을 사용하면 특정 버킷 또는 버킷 그룹 간 또는 특정 영역 또는 영역 그룹 간 사용자 지정 동기화 그룹 데이터 흐름인 파이프를 생성할 수 있습니다.

이 명령은 다음 옵션을 사용합니다.

Expand
옵션설명필수/선택 사항

--bucket

구성해야 하는 동기화 정책의 버킷 이름입니다. 버킷 수준 동기화 정책에서만 사용됩니다.

선택 사항

--group-id

동기화 그룹의 ID

필수 항목

--pipe-id

파이프 ID

필수 항목

--source-zones

동기화 그룹에 데이터를 전송하는 영역입니다. value에는 작은따옴표(')를 사용합니다. 쉼표를 사용하여 여러 영역을 구분합니다. 데이터 흐름 규칙과 일치하는 모든 영역에 와일드카드 * 를 사용합니다.

필수 항목

--source-bucket

동기화 그룹에 데이터를 전송하는 버킷 또는 버킷입니다. 버킷 이름을 언급하지 않으면 * (wildcard)가 기본값으로 사용됩니다. 버킷 수준에서 소스 버킷은 생성된 동기화 그룹이 영역 그룹 수준에서 생성되는 버킷이 됩니다. 소스 버킷은 모든 버킷입니다.

선택 사항

--source-bucket-id

소스 버킷의 ID입니다.

선택 사항

--dest-zones

동기화 데이터를 수신하는 영역 또는 영역입니다. value에는 작은따옴표(')를 사용합니다. 쉼표를 사용하여 여러 영역을 구분합니다. 데이터 흐름 규칙과 일치하는 모든 영역에 와일드카드 * 를 사용합니다.

필수 항목

--dest-bucket

동기화 데이터를 수신하는 버킷 또는 버킷입니다. 버킷 이름을 언급하지 않으면 * (wildcard)가 기본값으로 사용됩니다. 버킷 수준에서 대상 버킷은 동기화 그룹이 생성되는 버킷이며 영역 그룹 수준에서 대상 버킷은 모든 버킷이 됩니다.

선택 사항

--dest-bucket-id

대상 버킷의 ID입니다.

선택 사항

--prefix

버킷 접두사입니다. 와일드카드 * 를 사용하여 소스 오브젝트를 필터링합니다.

선택 사항

--prefix-rm

필터링에 버킷 접두사를 사용하지 마십시오.

선택 사항

--tags-add

쉼표로 구분된 키=값 쌍 목록입니다.

선택 사항

--tags-rm

태그의 키=값 쌍을 하나 이상 제거합니다.

선택 사항

--dest-owner

소스에서 오브젝트의 대상 소유자입니다.

선택 사항

--storage-class

소스에서 오브젝트의 대상 스토리지 클래스입니다.

선택 사항

--mode

시스템 모드 또는 사용자 모드에 대해 시스템을 사용합니다.

선택 사항

--uid

사용자 모드에서 권한 검증에 사용됩니다. 동기화 작업을 실행할 사용자 ID를 지정합니다.

선택 사항

참고

영역 그룹 수준에서 특정 버킷에 대한 동기화를 활성화/비활성화하려면 동일한 버킷 이름 또는 버킷-id를 사용하여 각 버킷에 대한 파이프를 활성화/비활성화하고 --dest-bucket 을 사용하여 각 버킷에 대한 파이프를 생성하십시오(예: -- source- bucket-id--dest-bucket-id 및 --dest-bucket. . . .

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  • 동기화 그룹 파이프를 생성합니다. create 명령은 관련 옵션으로만 동기화 그룹 파이프를 생성하여 명령을 업데이트하는 데도 사용됩니다.

    구문

    radosgw-admin sync group pipe create --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET --dest-bucket-id=DESTINATION_BUCKET_ID --prefix=SOURCE_PREFIX --prefix-rm --tags-add=KEY1=VALUE1,KEY2=VALUE2,.. --tags-rm=KEY1=VALUE1,KEY2=VALUE2, ... --dest-owner=OWNER_ID --storage-class=STORAGE_CLASS --mode=USER --uid=USER_ID
    Copy to Clipboard Toggle word wrap

5.7.10. 동기화 그룹 파이프 수정 또는 삭제

스토리지 관리자는 동기화 그룹 pipe modify 명령 또는 동기화 그룹 pipe remove 명령을 사용하여 특정 옵션을 제거하여 동기화 그룹 파이프를 수정할 수 있습니다. 동기화 그룹 pipe remove 명령을 사용하여 영역, 버킷 또는 동기화 그룹 파이프를 완전히 제거할 수도 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  • modify 인수를 사용하여 동기화 그룹 파이프 옵션을 수정합니다.

    구문

    radosgw-admin sync group pipe modify --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET1 --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET1 --dest-bucket-id=_DESTINATION_BUCKET-ID
    Copy to Clipboard Toggle word wrap

    참고

    영역을 작은따옴표(')에 배치해야 합니다. 소스 버킷에는 따옴표가 필요하지 않습니다.

    예제

    [root@host01 ~]# radosgw-admin sync group pipe modify --group-id=zonegroup --pipe-id=pipe --dest-zones='primary','secondary','tertiary' --source-zones='primary','secondary','tertiary' --source-bucket=pri-bkt-1 --dest-bucket=pri-bkt-1
    Copy to Clipboard Toggle word wrap

  • remove 인수를 사용하여 동기화 그룹 파이프 옵션을 수정합니다.

    구문

    radosgw-admin sync group pipe remove --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET, --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET --dest-bucket-id=DESTINATION_BUCKET-ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin sync group pipe remove --group-id=zonegroup --pipe-id=pipe --dest-zones='primary','secondary','tertiary' --source-zones='primary','secondary','tertiary' --source-bucket=pri-bkt-1 --dest-bucket=pri-bkt-1
    Copy to Clipboard Toggle word wrap

  • 동기화 그룹 파이프를 삭제합니다.

    구문

    radosgw-admin sync group pipe remove --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin sync group pipe remove -bucket-name=mybuck --group-id=zonegroup --pipe-id=pipe
    Copy to Clipboard Toggle word wrap

5.7.11. 동기화 작업에 대한 정보 가져오기

sync info 명령을 사용하면 동기화 정책에서 정의한 대로 예상되는 동기화 소스 및 대상에 대한 정보를 가져올 수 있습니다.

버킷에 대한 동기화 정책을 생성할 때 해당 정책은 데이터가 해당 버킷에서 다른 영역의 다른 버킷으로 이동하는 방식을 정의합니다. 정책을 생성하면 버킷이 다른 버킷과 동기화될 때마다 힌트로 사용되는 버킷 종속성 목록이 생성됩니다. 버킷은 실제로 동기화되지 않고 다른 버킷을 참조할 수 있습니다. 동기화는 데이터 흐름에서 동기화를 허용하는지 여부에 따라 달라집니다.

--bucketeffective-zone-name 매개변수는 모두 선택 사항입니다. 옵션을 지정하지 않고 sync info 명령을 호출하면 Object Gateway는 모든 영역의 동기화 정책으로 정의된 모든 동기화 작업을 반환합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터입니다.
  • root 또는 sudo 액세스.
  • Ceph Object Gateway가 설치되어 있습니다.
  • 그룹 동기화 정책이 정의됩니다.

프로세스

  • 버킷의 동기화 작업에 대한 정보를 가져옵니다.

    구문

    radosgw-admin sync info --bucket=BUCKET_NAME --effective-zone-name=ZONE_NAME
    Copy to Clipboard Toggle word wrap

  • zonegroup 수준에서 동기화 작업에 대한 정보를 가져옵니다.

    구문

    radosgw-admin sync info
    Copy to Clipboard Toggle word wrap

5.8. 버킷 세분화된 동기화 정책

이제 다음 기능이 지원됩니다.

  • 그린 필드 배포: 이 릴리스에서는 새로운 다중 사이트 배포를 지원합니다. 버킷 세분화된 동기화 복제를 설정하려면 새 영역 그룹/zone을 최소한으로 구성해야 합니다.
  • brownfield deployment: Ceph Object Gateway 다중 사이트 복제 구성을 새로 제공하는 Ceph Object Gateway 버킷 세분화된 동기화 정책 복제로 마이그레이션하거나 업그레이드합니다.
참고

업그레이드 중에 스토리지 클러스터의 모든 노드가 동일한 스키마에 있는지 확인합니다.

  • 데이터 흐름 - 방향성, 대칭성 : 단방향 및 양방향/대칭 복제를 구성할 수 있습니다.
중요

이번 릴리스에서는 다음 기능이 지원되지 않습니다.

  • 소스 필터
  • 스토리지 클래스
  • 대상 소유자 변환
  • 사용자 모드

버킷 또는 zonegroup의 동기화 정책이 disabled 에서 enabled 상태로 이동하면 다음과 같은 동작 변경 사항이 관찰됩니다.

일반적인 시나리오:

  • zonegroup 수준: 동기화 정책이 비활성화 되면 추가 단계 없이 동기화 정책이 활성화되는 즉시 다운로드됩니다.
  • 버킷 수준: 동기화 정책이 비활성화 되면 정책이 활성화될 때 데이터가 수집되지 않습니다. 이 경우 아래 두 가지 해결 방법 중 하나를 적용할 수 있습니다.

    • 버킷에 새 데이터를 작성하면 이전 데이터가 다시 동기화됩니다.
    • 버킷 동기화 실행 명령을 실행하면 이전 데이터가 모두 동기화됩니다.
참고

동기화 정책에서 레거시 정책으로 전환하려면 먼저 sync init 명령을 실행한 다음 radosgw-admin 버킷 sync 명령을 실행하여 모든 오브젝트를 동기화해야 합니다.

reshard 시나리오:

  • zonegroup 수준: 정책이 비활성화 될 때 발생하는 모든 reshard, 정책을 다시 활성화한 후 동기화가 멈춥니다. 이 시점에서 새 오브젝트도 동기화되지 않습니다. 버킷 동기화 실행 명령을 해결 방법으로 실행합니다.
  • 버킷 수준: 정책이 비활성화 되면 버킷이 다시 하드된 경우 정책을 다시 활성화한 후 동기화가 중단됩니다. 이 시점에서 새 오브젝트도 동기화되지 않습니다. 버킷 동기화 실행 명령을 해결 방법으로 실행합니다.
참고

정책이 zonegroup에 대해 활성화 되도록 설정되고 정책이 버킷에 대해 활성화 또는 허용 되도록 설정된 경우 파이프 구성은 버킷 수준이 아닌 zonegroup 수준에서 적용됩니다. 이는 알려진 문제 BZ#2240719 입니다.

5.8.1. 영역 그룹의 양방향 정책 설정

영역 그룹 동기화 정책은 새 동기화 정책 엔진을 사용하여 생성됩니다. zonegroup 동기화 정책을 변경하려면 기간 업데이트 및 커밋이 필요합니다.

아래 예제에서 그룹 정책을 생성하고 한 영역에서 다른 영역으로 데이터 이동을 위한 데이터 흐름을 정의합니다. 이 데이터 흐름을 사용할 수 있는 버킷을 정의하도록 영역 그룹의 파이프를 구성합니다. 아래 예제의 시스템에는 us-east (마스터 영역), us-west 및 us-west -2 의 3 영역이 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  1. 상태가 allowed 로 설정된 새 동기화 그룹을 생성합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group create --group-id=group1 --status=allowed
    Copy to Clipboard Toggle word wrap

    참고

    완전히 구성된 zonegroup 복제 정책이 생성될 때까지 복제가 시작되지 않도록 --statusallowed 로 설정하는 것이 좋습니다.

  2. 양방향 복제를 활성화하려면 --flow-type대칭 으로 설정하여 새로 생성된 그룹에 대한 흐름 정책을 생성합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group flow create --group-id=group1 \
                            --flow-id=flow-mirror --flow-type=symmetrical \
                            --zones=us-east,us-west
    Copy to Clipboard Toggle word wrap

  3. 파이프라는 새 파이프를 만듭니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe create --group-id=group1 \
                              --pipe-id=pipe1 --source-zones='*' \
                              --source-bucket='*' --dest-zones='*' \
                              --dest-bucket='*'
    Copy to Clipboard Toggle word wrap

    참고

    영역에 * 와일드카드를 사용하여 이전 흐름 정책에 설정된 모든 영역을 포함하고 버킷의 경우 *를 사용하여 영역의 모든 기존 버킷을 복제합니다.

  4. 버킷 동기화 정책을 구성한 후 --statusenabled 로 설정합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group modify --group-id=group1 --status=enabled
    Copy to Clipboard Toggle word wrap

  5. 새 기간을 업데이트하고 커밋합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

    참고

    zonegroup 정책의 경우 기간을 업데이트하고 커밋해야 합니다.

  6. 선택 사항: 동기화 소스 및 특정 버킷의 대상을 확인합니다. us-eastus-west 영역의 모든 버킷은 양방향으로 복제합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync info -bucket buck
    {
        "sources": [
            {
                "id": "pipe1",
                "source": {
                    "zone": "us-east",
                    "bucket": "buck:115b12b3-....4409.1"
                },
                "dest": {
                    "zone": "us-west",
                    "bucket": "buck:115b12b3-....4409.1"
                },
                ...
            }
        ],
        "dests": [
            {
                "id": "pipe1",
                "source": {
                    "zone": "us-west",
                    "bucket": "buck:115b12b3-....4409.1"
                },
                "dest": {
                    "zone": "us-east",
                    "bucket": "buck:115b12b3-....4409.1"
                },
               ...
            }
        ],
        ...
    }
    Copy to Clipboard Toggle word wrap

    위 출력의 id 필드에는 해당 항목을 생성한 파이프 규칙이 반영됩니다. 아래 예와 같이 단일 규칙은 여러 개의 동기화 항목을 생성할 수 있습니다.

5.8.2. 영역 그룹의 방향 정책 설정

동기화 정책 엔진으로 영역 그룹의 정책을 방향적으로 설정합니다.

다음 예에서는 그룹 정책을 생성하고 한 영역에서 다른 영역으로 데이터 이동을 위한 데이터 흐름을 구성합니다. 또한 이 데이터 흐름을 사용할 수 있는 버킷을 정의하도록 영역 그룹의 파이프를 구성합니다. 다음 예제의 시스템에는 us-east (기본 영역), us-west(두 번째 영역) 및 us-west -2 (백업 영역)의 3 영역이 포함됩니다. 여기에서 us-west-2us-west 의 복제본이지만 데이터는 복제되지 않습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  1. 기본 영역에서 allowed 로 설정된 상태로 새 동기화 그룹을 생성합니다.

    구문

    radosgw-admin sync group create --group-id=GROUP_ID --status=allowed
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group create --group-id=group1 --status=allowed
    Copy to Clipboard Toggle word wrap

    참고

    완전히 구성된 zonegroup 복제 정책이 생성될 때까지 복제가 시작되지 않도록 --statusallowed 로 설정하는 것이 좋습니다.

  2. 흐름을 만듭니다.

    구문

    radosgw-admin sync group flow create --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=directional --source-zone=SOURCE_ZONE_NAME --dest-zone=DESTINATION_ZONE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group flow create --group-id=group1 --flow-id=us-west-backup --flow-type=directional --source-zone=us-west --dest-zone=us-west-2
    Copy to Clipboard Toggle word wrap

  3. 파이프를 만듭니다.

    구문

    radosgw-admin sync group pipe create --group-id=GROUP_ID --pipe-id=PIPE_ID  --source-zones='SOURCE_ZONE_NAME' --dest-zones='DESTINATION_ZONE_NAME'
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe create --group-id=group1 --pipe-id=pipe1 --source-zones='us-west' --dest-zones='us-west-2'
    Copy to Clipboard Toggle word wrap

  4. 새 기간을 업데이트하고 커밋합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

    참고

    zonegroup 정책의 경우 기간을 업데이트하고 커밋해야 합니다.

  5. 두 사이트의 동기화 정보를 사용하여 zonegroup의 소스 및 대상을 확인합니다.

    구문

    radosgw-admin sync info
    Copy to Clipboard Toggle word wrap

5.8.3. 버킷에 대한 방향 정책 설정

동기화 정책 엔진과 함께 버킷의 정책을 방향대로 설정합니다.

다음 예에서는 그룹 정책을 생성하고 한 영역에서 다른 영역으로 데이터 이동을 위한 데이터 흐름을 구성합니다. 또한 이 데이터 흐름을 사용할 수 있는 버킷을 정의하도록 영역 그룹의 파이프를 구성합니다. 다음 예제의 시스템에는 us-east (기본 영역), us-west(두 번째 영역) 및 us-west -2 (백업 영역)의 3 영역이 포함됩니다. 여기에서 us-west-2us-west 의 복제본이지만 데이터는 복제되지 않습니다.

영역 그룹과 버킷에 대한 방향 정책을 설정하는 것과의 차이점은 --bucket 옵션을 지정해야 한다는 것입니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  1. 기본 영역에서 allowed 로 설정된 상태로 새 동기화 그룹을 생성합니다.

    구문

    radosgw-admin sync group create --group-id=GROUP_ID --status=allowed --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group create --group-id=group1 --status=allowed --bucket=buck
    Copy to Clipboard Toggle word wrap

    참고

    완전히 구성된 zonegroup 복제 정책이 생성될 때까지 복제가 시작되지 않도록 --statusallowed 로 설정하는 것이 좋습니다.

  2. 흐름을 만듭니다.

    구문

    radosgw-admin sync group flow create --bucket-name=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=directional --source-zone=SOURCE_ZONE_NAME --dest-zone=DESTINATION_ZONE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group flow create --bucket-name=buck --group-id=group1 --flow-id=us-west-backup --flow-type=directional --source-zone=us-west --dest-zone=us-west-2
    Copy to Clipboard Toggle word wrap

  3. 파이프를 만듭니다.

    구문

    radosgw-admin sync group pipe create --group-id=GROUP_ID --bucket-name=BUCKET_NAME --pipe-id=PIPE_ID  --source-zones='SOURCE_ZONE_NAME' --dest-zones='DESTINATION_ZONE_NAME'
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe create --group-id=group1 --bucket-name=buck --pipe-id=pipe1 --source-zones='us-west' --dest-zones='us-west-2'
    Copy to Clipboard Toggle word wrap

  4. 두 사이트의 동기화 정보를 사용하여 zonegroup의 소스 및 대상을 확인합니다.

    구문

    radosgw-admin sync info --bucket-name=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

5.8.4. 버킷에 대한 양방향 정책 설정

버킷 수준 정책에 대한 데이터 흐름은 zonegroup 정책에서 상속됩니다. 버킷 수준 정책 흐름 및 파이프는 영역 그룹 정책에 정의된 흐름의 하위 집합이므로 버킷 수준 정책에 대해 데이터 흐름 및 파이프를 변경할 필요가 없습니다.

참고
  • 버킷 수준 정책은 zonegroup 정책에서 금지된 를 제외하고 활성화되지 않은 파이프를 활성화할 수 있습니다.
  • 버킷 수준 정책에는 기간 업데이트가 필요하지 않습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • 동기화 흐름이 생성됩니다.

프로세스

  1. bucket 복제를 허용할 있도록 zonegroup 정책 --status 를 설정합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group modify --group-id=group1 --status=allowed
    Copy to Clipboard Toggle word wrap

  2. zonegroup 정책을 수정한 후 기간을 업데이트합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  3. 동기화하려는 버킷에 대한 동기화 그룹을 생성하고 --statusenabled 로 설정합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group create --bucket=buck \
                              --group-id=buck-default --status=enabled
    Copy to Clipboard Toggle word wrap

  4. 이전 단계에서 만든 그룹의 파이프를 만듭니다. 흐름은 데이터 흐름이 대칭인 zonegroup 수준 정책에서 상속됩니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe create --bucket=buck \
                              --group-id=buck-default --pipe-id=pipe1 \
                              --source-zones='*' --dest-zones='*'
    Copy to Clipboard Toggle word wrap

    참고

    와일드카드 *를 사용하여 버킷 복제의 소스 및 대상 영역을 지정합니다.

  5. 선택 사항: 동기화 정책에 정의된 예상 버킷 동기화 소스 및 대상에 대한 정보를 검색하려면 -- bucket 플래그와 함께 radosgw-admin 버킷 동기화 info 명령을 실행합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket sync info --bucket buck
    realm 33157555-f387-44fc-b4b4-3f9c0b32cd66 (india)
    zonegroup 594f1f63-de6f-4e1e-90b6-105114d7ad55 (shared)
    zone ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5 (primary)
    bucket :buck[ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1]
    
    source zone e0e75beb-4e28-45ff-8d48-9710de06dcd0
    bucket :buck[ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1]
    Copy to Clipboard Toggle word wrap

  6. 선택 사항: 동기화 정책에 정의된 예상 동기화 소스 및 대상에 대한 정보를 검색하려면 --bucket 플래그를 사용하여 radosgw-admin sync info 명령을 실행합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync info --bucket buck
    {
        "id": "pipe1",
        "source": {
            "zone": "secondary",
            "bucket": "buck:ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1"
        },
        "dest": {
            "zone": "primary",
            "bucket": "buck:ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1"
        },
        "params": {
            "source": {
                "filter": {
                    "tags": []
                }
            },
            "dest": {},
            "priority": 0,
            "mode": "system",
            "user": ""
        }
    },
        {
        "id": "pipe1",
        "source": {
            "zone": "primary",
            "bucket": "buck:ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1"
        },
        "dest": {
            "zone": "secondary",
            "bucket": "buck:ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1"
        },
        "params": {
            "source": {
                "filter": {
                    "tags": []
                }
            },
            "dest": {},
            "priority": 0,
            "mode": "system",
            "user": ""
        }
    }
    Copy to Clipboard Toggle word wrap

5.8.5. 버킷 간 동기화

영역 간에 소스와 대상 버킷 간에 데이터를 동기화할 수 있지만 동일한 영역에는 동기화할 수 없습니다. 내부적으로는 여전히 대상 영역의 소스에서 데이터를 가져옵니다.

와일드카드 버킷 이름은 현재 버킷이 버킷 동기화 정책의 컨텍스트에 있음을 나타냅니다.

버킷 간에는 다음 두 가지 유형의 동기화가 있습니다.

  1. 버킷에서 동기화 - 소스 버킷을 지정해야 합니다.
  2. 버킷에 동기화 - 대상 버킷을 지정해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.

다른 버킷에서 동기화

  1. 다른 영역의 버킷에서 데이터를 가져올 동기화 그룹을 생성합니다.

    구문

    radosgw-admin sync group create  --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group create --bucket=buck4 --group-id=buck4-default --status=enabled
    Copy to Clipboard Toggle word wrap

  2. 데이터 가져오기.

    구문

    radosgw-admin sync group pipe create --bucket-name=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones=SOURCE_ZONE_NAME --source-bucket=SOURCE_BUCKET_NAME --dest-zones=DESTINATION_ZONE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe create --bucket=buck4 \
                              --group-id=buck4-default --pipe-id=pipe1 \
                              --source-zones='*' --source-bucket=buck5 \
                              --dest-zones='*'
    Copy to Clipboard Toggle word wrap

    이 예제에서는 소스 버킷이 buck5 임을 확인할 수 있습니다.

  3. 선택 사항: 특정 영역의 버킷과 동기화합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe modify --bucket=buck4 \
                              --group-id=buck4-default --pipe-id=pipe1 \
                              --source-zones=us-west --source-bucket=buck5 \
                              --dest-zones='*'
    Copy to Clipboard Toggle word wrap

  4. 동기화 상태를 확인합니다.

    구문

    radosgw-admin sync info --bucket-name=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync info --bucket=buck4
    {
        "sources": [],
        "dests": [],
        "hints": {
            "sources": [],
            "dests": [
                "buck4:115b12b3-....14433.2"
            ]
        },
        "resolved-hints-1": {
            "sources": [],
            "dests": [
                {
                    "id": "pipe1",
                    "source": {
                        "zone": "us-west",
                        "bucket": "buck5"
                    },
                    "dest": {
                        "zone": "us-east",
                        "bucket": "buck4:115b12b3-....14433.2"
                    },
                    ...
                },
                {
                    "id": "pipe1",
                    "source": {
                        "zone": "us-west",
                        "bucket": "buck5"
                    },
                    "dest": {
                        "zone": "us-west-2",
                        "bucket": "buck4:115b12b3-....14433.2"
                    },
                    ...
                }
            ]
        },
        "resolved-hints": {
            "sources": [],
            "dests": []
        }
    Copy to Clipboard Toggle word wrap

    resolved-hints 가 있습니다. 즉, 버킷 buck5 는 자체 정책이 아닌 간접적으로 buck4 동기화에 대해 발견되었습니다. buck5 자체에 대한 정책은 비어 있습니다.

다른 버킷에 동기화

  1. 동기화 그룹을 생성합니다.

    구문

    radosgw-admin sync group create  --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group create --bucket=buck6 \
                              --group-id=buck6-default --status=enabled
    Copy to Clipboard Toggle word wrap

  2. 데이터를 푸시합니다.

    구문

    radosgw-admin sync group pipe create --bucket-name=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones=SOURCE_ZONE_NAME --dest-zones=DESTINATION_ZONE_NAME --dest-bucket=DESTINATION_BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe create --bucket=buck6 \
                              --group-id=buck6-default --pipe-id=pipe1 \
                              --source-zones='*' --dest-zones='*' --dest-bucket=buck5
    Copy to Clipboard Toggle word wrap

    이 예제에서는 대상 버킷이 buck5 임을 확인할 수 있습니다.

  3. 선택 사항: 특정 영역의 버킷에 동기화합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe modify  --bucket=buck6 \
                              --group-id=buck6-default --pipe-id=pipe1 \
                              --source-zones='*' --dest-zones='us-west' --dest-bucket=buck5
    Copy to Clipboard Toggle word wrap

  4. 동기화 상태를 확인합니다.

    구문

    radosgw-admin sync info --bucket-name=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]#  radosgw-admin sync info --bucket buck5
    {
      "sources": [],
      "dests": [
        {
          "id": "pipe1",
          "source": {
            "zone": "us-west",
            "bucket": "buck6:c7887c5b-f6ff-4d5f-9736-aa5cdb4a15e8.20493.4"
          },
          "dest": {
            "zone": "us-east",
            "bucket": "buck5"
          },
          "params": {
            "source": {
              "filter": {
                "tags": []
              }
            },
            "dest": {},
            "priority": 0,
            "mode": "system",
            "user": "s3cmd"
          }
        },
      ],
      "hints": {
        "sources": [],
        "dests": [
          "buck5"
        ]
      },
      "resolved-hints-1": {
        "sources": [],
        "dests": []
      },
      "resolved-hints": {
        "sources": [],
        "dests": []
      }
    }
    Copy to Clipboard Toggle word wrap

5.8.6. 오브젝트 필터링

접두사 및 태그를 사용하여 버킷 내에서 오브젝트를 필터링합니다. zonegroup 수준 정책에서도 오브젝트 필터를 설정할 수 있습니다. --bucket 옵션을 사용하는 경우 버킷의 버킷 수준으로 설정됩니다.

다음 예에서 한 영역의 buck1 버킷에서 동기화가 foo/ 접두사로 시작하는 오브젝트와 다른 영역의 buck1 버킷과 동기화됩니다. 마찬가지로 color=blue 와 같은 태그가 있는 오브젝트를 필터링할 수 있습니다. 접두사와 태그를 결합할 수 있습니다. 이 경우 오브젝트를 동기화하려면 둘 다 사용해야 합니다. priority 매개변수도 전달할 수 있으며, 일치하는 여러 다른 규칙이 있는 시기를 결정하는 데 사용됩니다. 이 구성에서는 사용할 규칙이 결정됩니다.

참고
  1. 동기화 정책의 태그에 오브젝트를 동기화하는 동안 두 개 이상의 태그가 있는 경우 키 값 쌍인 하나 이상의 태그와 일치하는 오브젝트를 동기화합니다. 오브젝트가 모든 태그 세트와 일치하지 않을 수 있습니다.
  2. 접두사 및 태그가 설정된 경우 오브젝트를 다른 영역과 동기화하려면 오브젝트에 접두사가 있어야 하며 하나의 태그가 일치해야 합니다. 그런 다음 서로 동기화됩니다.

사전 요구 사항

  • 두 개 이상의 실행 중인 Red Hat Ceph Storage 클러스터
  • Ceph Object Gateway가 설치되어 있습니다.
  • 버킷이 생성됩니다.

프로세스

  1. 새 동기화 그룹을 생성합니다. 버킷 수준에서 생성하려면 --bucket 옵션을 사용합니다.

    구문

    radosgw-admin sync group create --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group create --bucket=buck1 --group-id=buck8-default --status=enabled
    Copy to Clipboard Toggle word wrap

  2. 오브젝트가 태그와 일치하는 버킷 간 동기화. 흐름은 데이터 흐름이 대칭인 zonegroup 수준 정책에서 상속됩니다.

    구문

    radosgw-admin sync group pipe create --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --tags-add=KEY1=VALUE1,KEY2=VALUE2 --source-zones='ZONE_NAME1','ZONE_NAME2' --dest-zones='ZONE_NAME1','ZONE_NAME2'
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe create --bucket=buck1 \
                              --group-id=buck1-default --pipe-id=pipe-tags \
                              --tags-add=color=blue,color=red --source-zones='*' \
                              --dest-zones='*'
    Copy to Clipboard Toggle word wrap

  3. 오브젝트가 접두사와 일치하는 버킷 간 동기화. 흐름은 데이터 흐름이 대칭인 zonegroup 수준 정책에서 상속됩니다.

    구문

    radosgw-admin sync group pipe create --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --prefix=PREFIX --source-zones='ZONE_NAME1','ZONE_NAME2' --dest-zones='ZONE_NAME1','ZONE_NAME2'
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync group pipe create --bucket=buck1 \
                              --group-id=buck1-default --pipe-id=pipe-prefix \
                              --prefix=foo/ --source-zones='*' --dest-zones='*' \
    Copy to Clipboard Toggle word wrap

  4. 업데이트된 동기화를 확인합니다.

    구문

    radosgw-admin sync info --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync info --bucket=buck1
    Copy to Clipboard Toggle word wrap

    참고

    예에서는 두 개의 서로 다른 대상과 소스만 반영되며, 구성마다 하나씩만 반영됩니다. 동기화 프로세스가 발생하면 동기화되는 각 오브젝트에 대한 관련 규칙을 선택합니다.

5.8.7. 버킷 간 정책 비활성화

금지 또는 허용되는 상태와 동기화 정보와 함께 버킷 간 정책을 비활성화할 수 있습니다.

영역 그룹 및 버킷 수준 동기화 정책에 사용할 수 있는 다양한 조합의 다중 사이트 동기화 정책 상태를 참조하십시오.

경우에 따라 두 버킷 간 복제를 중단하려면 버킷에 대한 그룹 정책을 금지할 수 있습니다. 설정된 동기화가 버킷에 대해 발생하지 않는 경우 zonegroup 수준에서 정책을 비활성화할 수도 있습니다.

참고

radosgw-admin 동기화 그룹 create 명령을 사용하여 허용 또는 금지된 상태로 비활성화된 상태로 동기화 정책을 생성할 수도 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.

프로세스

  1. 동기화 그룹 modify 명령을 실행하여 허용 에서 금지 됨으로 상태를 변경합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync group modify --group-id  buck-default --status forbidden --bucket buck
    {
        "groups": [
            {
                "id": "buck-default",
                "data_flow": {},
                "pipes": [
                    {
                        "id": "pipe1",
                        "source": {
                            "bucket": "*",
                            "zones": [
                                "*"
                            ]
                        },
                        "dest": {
                            "bucket": "*",
                            "zones": [
                                "*"
                            ]
                        },
                        "params": {
                            "source": {
                                "filter": {
                                    "tags": []
                                }
                            },
                            "dest": {},
                            "priority": 0,
                            "mode": "system",
                        }
                    }
                ],
                "status": "forbidden"
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

    이 예에서 버킷 버클의 복제는 us -eastus-west 영역 간에 중단됩니다.

    참고

    버킷 동기화 정책이므로 해당 기간에 대한 업데이트 및 커밋이 필요하지 않습니다.

  2. 선택 사항: sync info 명령 명령을 실행하여 버킷 buck 의 동기화 상태를 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync info --bucket buck
    {
        "sources": [],
        "dests": [],
        "hints": {
            "sources": [],
            "dests": []
        },
        "resolved-hints-1": {
            "sources": [],
            "dests": []
        },
        "resolved-hints": {
            "sources": [],
            "dests": []
        }
    }
    Copy to Clipboard Toggle word wrap

    참고

    복제가 중단되므로 소스 및 대상 대상이 없습니다.

5.8.8. 대상 매개변수 사용

파이프 구성은 연결된 속성과 함께 그룹에 설정된 데이터 흐름을 활용하는 특정 버킷을 지정합니다. 파이프 구성에서 대상 버킷 또는 영역이 파이프 구성과 일치하는 경우 destination 매개 변수는 오브젝트의 위치를 지정합니다.

대상 매개변수에는 세 가지 유형이 있습니다.

  • 스토리지 클래스
  • 대상 소유자 변환
  • 사용자 모드
5.8.8.1. 대상 params: 스토리지 클래스

이 방법을 사용하면 오브젝트를 대상의 특정 스토리지 클래스에 복제할 수 있습니다.

대상 오브젝트의 스토리지 클래스를 구성하는 구문:

radosgw-admin sync group pipe create --bucket-name=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones=SOURCE_ZONE_NAME --dest-zones=DESTINATION_ZONE_NAME --dest-bucket=DESTINATION_BUCKET_NAME --storage-class=STORAGE_CLASS
Copy to Clipboard Toggle word wrap

예제:

[ceph: root@host01 /]# radosgw-admin sync group create --bucket=buck10 \
                          --group-id=buck10-default --status=enabled

[ceph: root@host01 /]# radosgw-admin sync group pipe create --bucket=buck10 \
                          --group-id=buck10-default \
                          --pipe-id=pipe-storage-class \
                          --source-zones='*' --dest-zones=us-west-2 \
                          --storage-class=CHEAP_AND_SLOW
Copy to Clipboard Toggle word wrap

5.8.8.2. 대상 매개변수: 대상 소유자 변환

이 방법을 사용하면 사용자 또는 버킷 정책을 구성하지 않고 소스 버킷에서 다른 소유자의 대상 버킷으로 오브젝트를 복제할 수 있습니다.

대상 오브젝트 소유자를 대상 버킷 소유자로 설정하는 구문입니다. 이를 위해서는 대상 버킷의 UID를 지정해야 합니다.

radosgw-admin sync group pipe create --bucket-name=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones=SOURCE_ZONE_NAME --dest-zones=DESTINATION_ZONE_NAME --dest-owner=DESTINATION_OWNER --dest-bucket=DESTINATION_BUCKET_NAME
Copy to Clipboard Toggle word wrap

예제:

[ceph: root@host01 /]# radosgw-admin sync group create --bucket=buck11 \
                          --group-id=buck11-default --status=enabled

[ceph: root@host01 /]# radosgw-admin sync group pipe create --bucket=buck11 \
                          --group-id=buck11-default --pipe-id=pipe-dest-owner \
                          --source-zones='*' --dest-zones='*' \
                          --dest-bucket=buck12 --dest-owner=joe
Copy to Clipboard Toggle word wrap

5.8.8.3. 대상 매개변수: 사용자 모드

사용자 모드를 사용하면 사용자가 오브젝트를 읽고 대상 버킷에 쓸 수 있는 권한이 있습니다. 이를 위해서는 사용자의 uid(작업이 실행되는 컨텍스트)가 지정되어야 합니다.

대상 영역의 대상 버킷에 오브젝트를 복제하려면 해당 버킷에 대한 읽기 및 쓰기 권한이 있어야 합니다. 기본적으로 사용자 모드는 시스템(-mode = system )으로 설정됩니다. 사용자 모드를 구성하려면 사용자의 사용자 ID(--uid)와 함께 사용자로 모드를 지정합니다.

사용자 모드의 사용자 ID를 설정하여 권한 검증에 대한 동기화 작업을 실행할 수 있습니다.

참고

관리자가 아닌 사용자가 대칭 흐름을 사용하여 영역 그룹 수준에서 모드로 시스템을 설정하는 경우:

  • 버킷 소유자는 버킷에만 IO를 쓸 수 있으며 동기화됩니다.
  • 모드가 시스템에 설정된 사용자는 버킷에만 쓸 수 있으며 다른 사용자 버킷에는 쓸 수 없습니다.
  • 관리자 또는 시스템 사용자는 모든 버킷에 쓸 수 있으며 다른 사이트와 동기화됩니다.

admin 사용자가 아닌 모든 사용자의 --mode=system 인 경우 해당 동작은 모드 사용자와 동일합니다. 사용자는 대상 버킷에 쓰기 또는 읽기 권한이 있는 경우에만 쓸 수 있습니다.

admin/system 사용자가 mode를 --mode=user 로 설정하면 관리자가 아닌 사용자가 오브젝트를 소유 버킷에 쓸 수 있습니다. 모드가 user이므로 오브젝트가 대상에 동기화되지 않습니다.

구문:

radosgw-admin sync group pipe create --bucket-name=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones=SOURCE_ZONE_NAME --dest-zones=DESTINATION_ZONE_NAME bucket=DESTINATION_BUCKET_NAME --mode=user --uid=UID_OF_USER
Copy to Clipboard Toggle word wrap

예제:

[ceph: root@host01 /]# radosgw-admin sync group pipe modify --bucket=buck11 \
                          --group-id=buck11-default --pipe-id=pipe-dest-owner \
                          --mode=user --uid=jenny
Copy to Clipboard Toggle word wrap

5.9. 다중 사이트 Ceph Object Gateway 명령줄 사용

스토리지 관리자는 다중 사이트 환경에서 Ceph Object Gateway를 사용하는 방법을 잘 이해할 수 있습니다. 다중 사이트 환경에서 영역, 영역 그룹 및 영역을 보다 효과적으로 관리하는 방법을 배울 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage.
  • Ceph Object Gateway 소프트웨어 배포.
  • Ceph Object Gateway 노드 또는 컨테이너에 액세스합니다.

5.9.1. realms

영역은 하나 이상의 영역을 포함하는 하나 이상의 영역 그룹과 차례로 오브젝트를 포함하는 버킷을 포함하는 하나 이상의 영역 그룹으로 구성된 전역적으로 고유한 네임스페이스를 나타냅니다. 영역을 사용하면 Ceph Object Gateway에서 동일한 하드웨어에서 여러 네임스페이스 및 해당 구성을 지원할 수 있습니다.

영역에는 마침표의 개념이 포함되어 있습니다. 각 기간은 시간대 그룹 및 시간대 구성의 상태를 나타냅니다. 영역 그룹 또는 영역을 변경할 때마다 기간을 업데이트하고 커밋합니다.

Red Hat은 새 클러스터의 영역을 생성하는 것이 좋습니다.

5.9.1.1. 영역 생성

영역을 생성하려면 realm create 명령을 사용하고 영역 이름을 지정합니다.

프로세스

  • 영역을 생성합니다.

    구문

    radosgw-admin realm create --rgw-realm=REALM_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin realm create --rgw-realm=test_realm
    Copy to Clipboard Toggle word wrap

    중요

    데이터 및 메타데이터가 default.rgw.data 및 default.rgw. index 풀에 저장된 경우 --default 플래그와 함께 영역을 사용하지 마십시오. 새 영역이 기본값으로 설정되고 이러한 풀에 중요한 데이터가 포함된 경우 radosgw-admin 유틸리티에서 이 데이터를 올바르게 관리하지 못할 수 있습니다.

    필요한 경우 영역을 기본값으로 지정하고 default.rgw 풀에 기존 데이터 또는 메타데이터가 필요하지 않은 경우에만 --default 플래그를 사용합니다. 기존 데이터 또는 메타데이터가 필요한 경우 기본 구성을 다중 사이트 또는 영역 설정으로 마이그레이션하거나 새 영역을 기본값으로 설정하지 않도록 합니다. 다중 사이트로 마이그레이션하는 방법에 대한 자세한 내용은 단일 사이트 시스템을 다중 사이트로 마이그레이션 을 참조하십시오. --default 를 지정하면 --rgw-realm 및 realm 이름이 명시적으로 제공되지 않는 한 각 radosgw-admin 호출을 사용하여 이 영역을 암시적으로 호출합니다.

  • 선택 사항: 기본 영역을 변경합니다.

    구문

    radosgw-admin realm default --rgw-realm=REALM_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin realm default --rgw-realm=test_realm1
    Copy to Clipboard Toggle word wrap

5.9.1.2. 기본값 만들기

영역 목록에 있는 하나의 영역은 기본 영역이어야 합니다. 기본 영역은 하나만 있을 수 있습니다. 영역이 하나만 있고 기본 영역을 만들 때 기본 영역으로 지정되지 않은 경우 기본 영역으로 설정합니다. 또는 기본 영역을 변경하려면 다음 명령을 실행합니다.

[ceph: root@host01 /]# radosgw-admin realm default --rgw-realm=test_realm
Copy to Clipboard Toggle word wrap
참고

영역이 default인 경우 명령줄은 --rgw-realm=realM_NAME 을 인수로 가정합니다.

5.9.1.3. Cryostat 삭제

영역을 삭제하려면 realm delete 명령을 실행하고 영역 이름을 지정합니다.

구문

radosgw-admin realm delete --rgw-realm=REALM_NAME
Copy to Clipboard Toggle word wrap

예제

[ceph: root@host01 /]# radosgw-admin realm delete --rgw-realm=test_realm
Copy to Clipboard Toggle word wrap

5.9.1.4. 영역 가져오기

영역을 가져오려면 realm get 명령을 실행하고 영역 이름을 지정합니다.

구문

radosgw-admin realm get --rgw-realm=REALM_NAME
Copy to Clipboard Toggle word wrap

예제

[ceph: root@host01 /]# radosgw-admin realm get --rgw-realm=test_realm >filename.json
Copy to Clipboard Toggle word wrap

CLI는 realm 속성을 사용하여 JSON 오브젝트를 에코합니다.

{
    "id": "0a68d52e-a19c-4e8e-b012-a8f831cb3ebc",
    "name": "test_realm",
    "current_period": "b0c5bbef-4337-4edd-8184-5aeab2ec413b",
    "epoch": 1
}
Copy to Clipboard Toggle word wrap

JSON 오브젝트를 파일에 출력하려면 > 및 출력 파일 이름을 사용합니다.

5.9.1.5. 영역 설정

영역을 설정하려면 realm set 명령을 실행하고 입력 파일 이름으로 영역 이름을 지정하고 --infile= 을 지정합니다.

구문

radosgw-admin realm set --rgw-realm=REALM_NAME --infile=IN_FILENAME
Copy to Clipboard Toggle word wrap

예제

[ceph: root@host01 /]# radosgw-admin realm set --rgw-realm=test_realm --infile=filename.json
Copy to Clipboard Toggle word wrap

5.9.1.6. 영역 나열

realms를 나열하려면 realm list 명령을 실행합니다.

예제

[ceph: root@host01 /]# radosgw-admin realm list
Copy to Clipboard Toggle word wrap

5.9.1.7. Cryostat 기간 나열

영역 기간을 나열하려면 realm list-periods 명령을 실행합니다.

예제

[ceph: root@host01 /]# radosgw-admin realm list-periods
Copy to Clipboard Toggle word wrap

5.9.1.8. pulling a Cryostat

마스터 영역 그룹 및 마스터 영역을 포함하는 노드에서 보조 영역 그룹 또는 영역이 포함된 노드로 영역을 가져오려면 영역 구성을 수신할 노드에서 realm pull 명령을 실행합니다.

구문

radosgw-admin realm pull --url=URL_TO_MASTER_ZONE_GATEWAY--access-key=ACCESS_KEY --secret=SECRET_KEY
Copy to Clipboard Toggle word wrap

5.9.1.9. 파일 이름 변경

하나의 영역은 해당 기간의 일부가 아닙니다. 결과적으로 영역 이름 변경은 로컬에만 적용되며 realm pull 으로 가져오지 않습니다.

중요

영역 이름을 여러 영역으로 변경할 때 각 영역에서 명령을 실행합니다.

프로세스

  1. 영역의 이름을 변경합니다.

    구문

    radosgw-admin realm rename --rgw-realm=REALM_NAME --realm-new-name=NEW_REALM_NAME
    Copy to Clipboard Toggle word wrap

    참고

    name 매개변수를 변경하는 데 realm 세트를 사용하지 마십시오. 내부 이름만 변경합니다. --rgw-realm 을 지정하면 이전 영역 이름이 계속 사용됩니다.

    예제

    [ceph: root@host01 /]# radosgw-admin realm rename --rgw-realm=test_realm --realm-new-name=test_realm2
    Copy to Clipboard Toggle word wrap

  2. 변경 사항을 커밋합니다.

    구문

    radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

5.9.2. 영역 그룹

Ceph Object Gateway는 영역 그룹의 개념을 사용하여 다중 사이트 배포 및 글로벌 네임스페이스를 지원합니다. 이전에는 리전이라고 하는 영역 그룹은 하나 이상의 영역 내에서 하나 이상의 Ceph Object Gateway 인스턴스의 지리적 위치를 정의합니다.

일부 설정이 Ceph 구성 파일에서 끝나지 않기 때문에 영역 그룹 구성은 일반적인 구성 절차와 다릅니다. 영역 그룹을 나열하고, 영역 그룹 구성을 가져오고, 영역 그룹 구성을 설정할 수 있습니다.

참고

기간 업데이트 단계가 클러스터 전체에서 변경 사항을 전파하기 때문에 radosgw-admin zonegroup 작업은 영역 내의 모든 노드에서 수행할 수 있습니다. 그러나 radosgw-admin 영역 작업은 영역 내의 호스트에서 수행해야 합니다.

5.9.2.1. 영역 그룹 생성

영역 그룹을 생성하는 것은 영역 그룹 이름을 지정하는 것으로 구성됩니다. 영역 생성은 --rgw-realm=realM_NAME 이 지정되지 않은 경우 기본 영역에 있다고 가정합니다. zonegroup이 마스터 영역 그룹인 경우 --master 플래그를 지정합니다.

중요

데이터 및 메타데이터가 default.rgw.data 및 default.rgw. index 풀에 저장된 경우 --default 플래그를 사용하여 영역 그룹을 생성하지 마십시오. 새 영역 그룹이 기본값으로 설정되고 이러한 풀에 중요한 데이터가 포함된 경우 radosgw-admin 유틸리티에서 이 데이터를 올바르게 관리하지 못할 수 있습니다.

필요한 경우 영역 그룹을 기본값으로 지정하고 default.rgw 풀에 기존 데이터 또는 메타데이터가 필요하지 않은 경우에만 --default 플래그를 사용합니다. 기존 데이터 또는 메타데이터가 필요한 경우 기본 구성을 다중 사이트 또는 영역 그룹 설정으로 마이그레이션하거나 새 영역 그룹을 기본값으로 설정하지 않습니다. 다중 사이트로 마이그레이션하는 방법에 대한 자세한 내용은 단일 사이트 시스템을 다중 사이트로 마이그레이션 을 참조하십시오. --default 를 지정하면 --rgw-zonegroup 및 영역 그룹 이름이 명시적으로 제공되지 않는 한 각 radosgw-admin 호출을 사용하여 영역 그룹을 암시적으로 호출합니다.

프로세스

  1. 영역 그룹을 생성합니다.

    구문

    radosgw-admin zonegroup create --rgw-zonegroup=ZONE_GROUP_NAME [--rgw-realm=REALM_NAME] [--master]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup create --rgw-zonegroup=zonegroup1 --rgw-realm=test_realm --default
    Copy to Clipboard Toggle word wrap

  2. 선택 사항: 영역 그룹 설정을 변경합니다.

    구문

    zonegroup modify --rgw-zonegroup=ZONE_GROUP_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup modify --rgw-zonegroup=zonegroup1
    Copy to Clipboard Toggle word wrap

  3. 선택 사항: 기본 영역 그룹을 변경합니다.

    구문

    radosgw-admin zonegroup default --rgw-zonegroup=ZONE_GROUP_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup default --rgw-zonegroup=zonegroup2
    Copy to Clipboard Toggle word wrap

  4. 변경 사항을 커밋합니다.

    구문

    radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

5.9.2.2. 영역 그룹을 기본값으로 설정

zonegroups 목록에 있는 하나의 zonegroup은 기본 zonegroup이어야 합니다. 하나의 기본 영역 그룹만 있을 수 있습니다. zonegroup이 하나만 있고 기본 zonegroup이 생성되면 기본 zonegroup으로 지정되지 않은 경우 기본 zonegroup으로 만듭니다. 또는 기본값인 zonegroup을 변경하려면 다음 명령을 실행합니다.

예제

[ceph: root@host01 /]# radosgw-admin zonegroup default --rgw-zonegroup=us
Copy to Clipboard Toggle word wrap

참고

zonegroup이 기본값인 경우 명령줄은 --rgw-zonegroup=ZONE_GROUP_NAME 을 인수로 가정합니다.

그런 다음 기간을 업데이트합니다.

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap
5.9.2.3. 영역 그룹에 영역 추가

영역 그룹에 영역을 추가하려면 영역에 있을 호스트에서 이 명령을 실행해야 합니다. 영역 그룹에 영역을 추가하려면 다음 명령을 실행합니다.

구문

radosgw-admin zonegroup add --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME
Copy to Clipboard Toggle word wrap

그런 다음 기간을 업데이트합니다.

예제

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

5.9.2.4. 영역 그룹에서 영역 제거

영역 그룹에서 영역을 제거하려면 다음 명령을 실행합니다.

구문

radosgw-admin zonegroup remove --rgw-zonegroup=ZONE_GROUP_NAME --rgw-zone=ZONE_NAME
Copy to Clipboard Toggle word wrap

그런 다음 기간을 업데이트합니다.

예제

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

5.9.2.5. 영역 그룹 이름 변경

zonegroup의 이름을 변경하려면 다음 명령을 실행합니다.

구문

radosgw-admin zonegroup rename --rgw-zonegroup=ZONE_GROUP_NAME --zonegroup-new-name=NEW_ZONE_GROUP_NAME
Copy to Clipboard Toggle word wrap

그런 다음 기간을 업데이트합니다.

예제

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

5.9.2.6. 영역 그룹 삭제

zonegroup을 삭제하려면 다음 명령을 실행합니다.

구문

radosgw-admin zonegroup delete --rgw-zonegroup=ZONE_GROUP_NAME
Copy to Clipboard Toggle word wrap

그런 다음 기간을 업데이트합니다.

예제

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

5.9.2.7. 영역 그룹 나열

Ceph 클러스터에는 영역 그룹 목록이 포함되어 있습니다. 영역 그룹을 나열하려면 다음 명령을 실행합니다.

[ceph: root@host01 /]# radosgw-admin zonegroup list
Copy to Clipboard Toggle word wrap

radosgw-admin 은 JSON 형식의 영역 그룹 목록을 반환합니다.

{
    "default_info": "90b28698-e7c3-462c-a42d-4aa780d24eda",
    "zonegroups": [
        "us"
    ]
}
Copy to Clipboard Toggle word wrap
5.9.2.8. 영역 그룹 가져오기

영역 그룹의 구성을 보려면 다음 명령을 실행합니다.

구문

radosgw-admin zonegroup get [--rgw-zonegroup=ZONE_GROUP_NAME]
Copy to Clipboard Toggle word wrap

영역 그룹 구성은 다음과 같습니다.

{ "ID": "abd3004c-9933-4157-a91e-de3fb0584f3e", "name": "shared", "api_name": "shared", "is_master": true, "endpoints": [ "http://pluto003:5000" ], "hostnames": [], "hostnames": [], "hostnames": [], "hostnames_s3website": [], "master_zone": "26a46c38-f7ce-4d97-b356-c251415c062b", "zones": [ { "id": "26a46c38-f7ce-4d97-b356-c251415c062b", "name": "primary", "endpoints": [ "http://pluto003:5000" ], "log_meta": false, "log_data": true, "bucket_index_max_shards": 11, "read_only": "", "tier_type": "", "sync_from_all": true, "redirect_zone": [], "redirect_zone": "", "supported_features": [com-encrypted", [com-encrypted" "resharding" ] }, { "id": "4fa4be7c-4ecd-4a2d-83b4-0e4d5a9d915f", "name": "archive", "endpoints": [ "http://pluto010:5000" ], "log_meta": false, "log_data": true, "bucket_index_max_hards": 11, "READ_ONLY": false, "tier_type": "archive", "sync_from_all": false, "sync_from": [ "primary" ], "redirect_zone": "", "compress-encrypted", "resharding", "resharding" ] }, { "id": "e3792738-60c-403f21", "name": "secondary", "endpoints": [ "http://pluto006:5000" ], "log_meta": false, "log_data": true, "bucket_index_max_shards": 11, "read_only": false, "tier_type": "", "sync_from_all": true, "sync_from_all": true, "sync_from_all": true "redirect_zone": "", "supported_features": [ "compress-encrypted", "resharding" ], "placement_targets": [ { "name": "default-placement", "tags": [], "storage_classes": [ "STANDARD" ] } ], "default_placement": "default-placement", "default_placement": "default-placement", } ] "realm_id": "2b7aa9ac-17cb-4a3e-9119-9065368cd3a8", "sync_policy": { "groups": [] }, "enabled_features": [resharding" ] }

Expand

필드

설명

id

영역 그룹에 할당된 고유한 문자열입니다.

name

영역 그룹의 이름입니다.

api_name

서로 다른 영역에서 데이터 복제에 사용되는 RADOS API의 이름입니다. 일반적으로 다르게 지정하지 않는 한 "name" 필드와 동일합니다.

is_master

영역 그룹이 master인 경우 true이고, 그렇지 않으면 false입니다. 다중 사이트 구성에 여러 영역 그룹이 있을 수 있습니다.

끝점

영역 group.configuration 중에 지정된 끝점입니다.

호스트 이름

지정할 선택적 필드입니다. 호스트 이름.

hostnames_s3website

S3. website의 호스트 이름입니다.

master_zone

영역 생성 중에 --master 매개변수를 사용하여 메타데이터 마스터로 지정된 영역입니다.

영역

영역 그룹 내에서 동기화되는 영역 목록입니다.

log_meta

메타데이터 로깅을 켜거나 해제하는 선택적 매개변수입니다.

log_data

데이터 로깅을 켜거나 끄는 선택적 매개변수입니다.

bucket_index_max_shards

영역에 저장된 새로 생성된 버킷의 기본 버킷 수입니다.

read_only

기본적으로 false(읽기-쓰기 영역); 영역이 읽기 전용으로 명시적으로 구성된 경우 true입니다.

tier_type

아카이브 영역, Elasticsearch, pub/sub 또는 클라우드 동기화 모듈과 같은 동기화 모듈 계층 유형으로 구성된 영역입니다.

sync_from_all

영역 그룹의 다른 모든 영역에서 영역을 동기화할 때 기본적으로 true입니다. 영역이 "sync_from" 필드에 지정된 하나 또는 몇 개의 영역에서만 동기화하려는 경우 false입니다.

sync_from

동기화할 하나 이상의 영역 이름 목록입니다.

supported_features

압축/암호화, 재하드 등과 같은 영역에서 사용할 수 있는 기능 목록입니다.

placement_targets

버킷 인덱스 풀, 스토리지 클래스 등을 포함한 기본 및 사용자 정의 배치 정보를 표시합니다.

sync_policy

있는 경우 동기화 정책 구성 정보입니다.

enabled_features

영역에서 활성화된 기능(예: 압축/암호화, 재하드 등)

5.9.2.9. 영역 그룹 설정

영역 그룹을 정의하는 것은 필요한 설정을 지정하여 JSON 오브젝트를 생성하는 것으로 구성됩니다.

  1. name: 영역 그룹의 이름입니다. 필수 항목입니다.
  2. api_name: 영역 그룹의 API 이름입니다. 선택 사항:
  3. is_master: 영역 그룹이 마스터 영역 그룹인지 여부를 결정합니다. 필수 항목입니다.

    참고: 하나의 마스터 영역 그룹만 있을 수 있습니다.

  4. 끝점: 영역 그룹의 모든 끝점 목록입니다. 예를 들어 동일한 영역 그룹을 참조하기 위해 여러 도메인 이름을 사용할 수 있습니다. 슬래시(\/)를 이스케이프해야 합니다. 각 끝점에 대해 포트(fqdn:port)를 지정할 수도 있습니다. 선택 사항:
  5. hostnames: 영역 그룹의 모든 호스트 이름 목록입니다. 예를 들어 동일한 영역 그룹을 참조하기 위해 여러 도메인 이름을 사용할 수 있습니다. 선택 사항: rgw dns name 설정이 이 목록에 자동으로 포함됩니다. 이 설정을 변경한 후 게이트웨이 데몬을 다시 시작해야 합니다.
  6. master_zone: 영역 그룹의 마스터 영역입니다. 선택 사항: 지정하지 않는 경우 기본 영역을 사용합니다.

    참고

    영역 그룹당 하나의 마스터 영역만 있을 수 있습니다.

  7. zones: 영역 그룹 내의 모든 영역 목록입니다. 각 영역에는 이름(필수), 끝점 목록(선택 사항)이 있으며 게이트웨이에서 메타데이터 및 데이터 작업(기본적으로 false)을 기록합니다.
  8. placement_targets: 배치 대상 목록(선택 사항). 각 배치 대상에는 배치 대상의 이름(필수)과 태그 목록(선택 사항)이 포함되어 있으므로 태그가 있는 사용자만 배치 대상(즉, 사용자 정보에서 사용자의 placement_tags 필드)을 사용할 수 있습니다.
  9. default_placement: 오브젝트 인덱스 및 오브젝트 데이터의 기본 배치 대상입니다. 기본적으로 default로 설정합니다. 각 사용자의 사용자 정보에 사용자 기본 배치를 설정할 수도 있습니다.

영역 그룹을 설정하려면 필수 필드로 구성된 JSON 오브젝트를 생성하고 오브젝트를 파일에 저장합니다(예: zonegroup.json ). 다음 명령을 실행합니다.

예제

[ceph: root@host01 /]# radosgw-admin zonegroup set --infile zonegroup.json
Copy to Clipboard Toggle word wrap

여기서 zonegroup.json 은 사용자가 생성한 JSON 파일입니다.

중요

기본 영역 그룹 is_master 설정은 기본적으로 true 입니다. 새 영역 그룹을 생성하고 마스터 영역 그룹을 만들려면 기본 영역 그룹 is_master 설정을 false 로 설정하거나 기본 영역 그룹을 삭제해야 합니다.

마지막으로 기간을 업데이트합니다.

예제

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

5.9.2.10. 영역 그룹 맵 설정

영역 그룹 맵을 설정하면 하나 이상의 영역 그룹으로 구성된 JSON 오브젝트를 생성하고 클러스터의 master_zonegroup 을 설정하는 것으로 구성됩니다. 영역 그룹 맵의 각 영역 그룹은 키/값 쌍으로 구성됩니다. 여기서 설정은 개별 영역 그룹 구성의 name 설정과 동일하며 val 은 개별 영역 그룹 구성으로 구성된 JSON 오브젝트입니다.

is_mastertrue 인 하나의 영역 그룹만 있을 수 있으며 영역 그룹 맵 끝에 master_zonegroup 으로 지정해야 합니다. 다음 JSON 오브젝트는 기본 영역 그룹 맵의 예입니다.

{
    "zonegroups": [
        {
            "key": "90b28698-e7c3-462c-a42d-4aa780d24eda",
            "val": {
                "id": "90b28698-e7c3-462c-a42d-4aa780d24eda",
                "name": "us",
                "api_name": "us",
                "is_master": "true",
                "endpoints": [
                    "http:\/\/rgw1:80"
                ],
                "hostnames": [],
                "hostnames_s3website": [],
                "master_zone": "9248cab2-afe7-43d8-a661-a40bf316665e",
                "zones": [
                    {
                        "id": "9248cab2-afe7-43d8-a661-a40bf316665e",
                        "name": "us-east",
                        "endpoints": [
                            "http:\/\/rgw1"
                        ],
                        "log_meta": "true",
                        "log_data": "true",
                        "bucket_index_max_shards": 11,
                        "read_only": "false"
                    },
                    {
                        "id": "d1024e59-7d28-49d1-8222-af101965a939",
                        "name": "us-west",
                        "endpoints": [
                            "http:\/\/rgw2:80"
                        ],
                        "log_meta": "false",
                        "log_data": "true",
                        "bucket_index_max_shards": 11,
                        "read_only": "false"
                    }
                ],
                "placement_targets": [
                    {
                        "name": "default-placement",
                        "tags": []
                    }
                ],
                "default_placement": "default-placement",
                "realm_id": "ae031368-8715-4e27-9a99-0c9468852cfe"
            }
        }
    ],
    "master_zonegroup": "90b28698-e7c3-462c-a42d-4aa780d24eda",
    "bucket_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "max_size_kb": -1,
        "max_objects": -1
    }
}
Copy to Clipboard Toggle word wrap

영역 그룹 맵을 설정하려면 다음 명령을 실행합니다.

예제

[ceph: root@host01 /]# radosgw-admin zonegroup-map set --infile zonegroupmap.json
Copy to Clipboard Toggle word wrap

여기서 zonegroupmap.json 은 생성한 JSON 파일입니다. 영역 그룹 맵에 지정된 영역에 대해 생성된 영역이 있는지 확인합니다. 마지막으로 기간을 업데이트합니다.

예제

[ceph: root@host01 /]#  radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

5.9.3. 영역

Ceph Object Gateway는 영역의 개념을 지원합니다. 영역은 하나 이상의 Ceph Object Gateway 인스턴스로 구성된 논리 그룹을 정의합니다.

일부 설정이 Ceph 구성 파일에서 끝나지 않기 때문에 영역 구성 절차가 일반적인 구성 절차와 다릅니다. 영역을 나열하고 영역 구성을 가져오고 영역 구성을 설정할 수 있습니다.

중요

모든 radosgw-admin 영역 작업은 작동하거나 영역 내에서 작동할 호스트에서 발행되어야 합니다.

5.9.3.1. 영역 생성

영역을 생성하려면 영역 이름을 지정합니다. 마스터 영역인 경우 --master 옵션을 지정합니다. 영역 그룹의 하나의 영역만 마스터 영역이 될 수 있습니다. 영역 그룹에 영역을 추가하려면 zonegroup 이름으로 --rgw-zonegroup 옵션을 지정합니다.

중요

영역 내에 있을 Ceph Object Gateway 노드에서 영역을 생성해야 합니다.

중요

데이터 및 메타데이터가 default.rgw.data 및 default.rgw. index 풀에 저장된 경우 --default 플래그를 사용하여 영역을 생성하지 마십시오. 새 영역이 기본값으로 설정되고 이러한 풀에 중요한 데이터가 포함된 경우 radosgw-admin 유틸리티에서 이 데이터를 올바르게 관리하지 못할 수 있습니다.

영역을 기본값으로 지정하고 default.rgw 풀에 기존 데이터 또는 메타데이터가 필요하지 않은 경우에만 --default 플래그를 사용합니다. 기존 데이터 또는 메타데이터가 필요한 경우 기본 구성을 다중 사이트 또는 영역 설정으로 마이그레이션하거나 새 영역을 기본값으로 설정하지 않도록 합니다. 다중 사이트로 마이그레이션하는 방법에 대한 자세한 내용은 단일 사이트 시스템을 다중 사이트로 마이그레이션 을 참조하십시오. --default 를 지정하면 --rgw-zone 및 영역 이름을 명시적으로 제공하지 않는 한 각 radosgw-admin 호출을 사용하여 영역을 암시적으로 호출합니다.

프로세스

  1. 영역을 생성합니다.

    구문

    radosgw-admin zone create --rgw-zone=ZONE_NAME \
                    [--zonegroup=ZONE_GROUP_NAME]\
                    [--endpoints=ENDPOINT_PORT [,<endpoint:port>] \
                    [--master] [--default] \
                    --access-key ACCESS_KEY --secret SECRET_KEY
    Copy to Clipboard Toggle word wrap

  2. 변경 사항을 커밋합니다.

    구문

    radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

5.9.3.2. 영역 삭제

영역을 삭제하려면 먼저 zonegroup에서 제거합니다.

프로세스

  1. zonegroup에서 영역을 제거합니다.

    구문

    radosgw-admin zonegroup remove --rgw-zonegroup=ZONE_GROUP_NAME\
                                     --rgw-zone=ZONE_NAME
    Copy to Clipboard Toggle word wrap

  2. 기간을 업데이트합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  3. 영역을 삭제합니다.

    중요

    절차는 영역 내의 호스트에서 사용해야 합니다.

    구문

    radosgw-admin zone delete --rgw-zone=ZONE_NAME
    Copy to Clipboard Toggle word wrap

  4. 기간을 업데이트합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

    중요

    먼저 영역 그룹에서 제거하지 않고 영역을 삭제하지 마십시오. 그렇지 않으면 기간을 업데이트할 수 없습니다.

삭제된 영역의 풀이 다른 위치에서 사용되지 않는 경우 풀을 삭제하는 것이 좋습니다. 아래 예제에서 DELETED_ZONE_NAME 을 삭제된 영역의 이름으로 바꿉니다.

중요

Ceph가 영역 풀을 삭제하면 복구할 수 없는 방식으로 모든 데이터를 삭제합니다. Ceph 클라이언트에 더 이상 풀 콘텐츠가 필요하지 않은 경우에만 영역 풀을 삭제합니다.

중요

multi-realm 클러스터에서 영역 풀과 함께 .rgw.root 풀을 삭제하면 클러스터의 영역 정보가 모두 제거됩니다. .rgw.root 풀을 삭제하기 전에 .rgw.root에 다른 활성 영역이 포함되어 있지 않은지 확인합니다.

구문

ceph osd pool delete DELETED_ZONE_NAME.rgw.control DELETED_ZONE_NAME.rgw.control --yes-i-really-really-mean-it
ceph osd pool delete DELETED_ZONE_NAME.rgw.data.root DELETED_ZONE_NAME.rgw.data.root --yes-i-really-really-mean-it
ceph osd pool delete DELETED_ZONE_NAME.rgw.log DELETED_ZONE_NAME.rgw.log --yes-i-really-really-mean-it
ceph osd pool delete DELETED_ZONE_NAME.rgw.users.uid DELETED_ZONE_NAME.rgw.users.uid --yes-i-really-really-mean-it
Copy to Clipboard Toggle word wrap

중요

풀을 삭제한 후 RGW 프로세스를 다시 시작합니다.

5.9.3.3. 영역 수정

영역을 수정하려면 영역 이름과 수정할 매개변수를 지정합니다.

중요

영역에 있을 Ceph Object Gateway 노드에서 영역을 수정해야 합니다.

구문

radosgw-admin zone modify [options]

--access-key=<key>
--secret/--secret-key=<key>
--master
--default
--endpoints=<list>
Copy to Clipboard Toggle word wrap

그런 다음 기간을 업데이트합니다.

예제

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

5.9.3.4. 영역 나열

root 로서 클러스터의 영역을 나열하려면 다음 명령을 실행합니다.

예제

[ceph: root@host01 /]# radosgw-admin zone list
Copy to Clipboard Toggle word wrap

5.9.3.5. 영역 가져오기

root 로서 영역 구성을 가져오려면 다음 명령을 실행합니다.

구문

radosgw-admin zone get [--rgw-zone=ZONE_NAME]
Copy to Clipboard Toggle word wrap

기본 영역은 다음과 같습니다.

{ "ID": "49408bb1-7e63-4324-b713-3d7778352f2c", "name": "zg1-2", "zg1-2.rgw.meta:root", "control_pool": "zg1-2.rgw.control", "zg1-2.rgw.control", "gc_pool": "zg1-2.rgw.log:gc", "lc_pool": "zg1-2.rgw:lc", "log_pool": "zg1-2.rgw.log", "intent_log_pool": "zg1-2.rgw.log", "zg1-2.rgw.log", "zg1-2.rgw.log", "zg1-2.rgw.log" "usage_log_pool": "zg1-2.rgw.log:usage", "roles_pool": "zg1-2.rgw.meta:roles", "zg1-2.rgw.log:reshard", "user_keys_pool": "zg1-2.rgw.w.meta:keys", "user_email_pool": "zg1-2.rgw.meta:users.email", "user_swift_pool": "zg1-2.rgw.users.swift", "user_uid_pool": "zg1-2.rgw.meta:users.uid", "otp_pool": "zg1-2.rgw.otp", "notif_pool": "zg1-2.rgw.log:notif", "topics_pool": "zg1-2.rgw.meta:topics", "account_pool": "zg1-2.rgw.meta:accounts", "group_pool": "zg1-2.rgw.meta:groups", "system_key": { "access_key": "1234567890", "secret_key": "pencil" }, "placement_pools": [ { "key": "default-placement", "val": { "index_pool": "zg1-2.rgw.buckets.index", "storage_classes": "storage_classes": { "STANDARD": { "data_pool": "zg1-2.rgw.buckets.data" }, "data_extra_pool": "zg1-2.rgw.buckets.non-ec", "index_type": 0, "inline_data": true } ], "realm_id": "7b65ec9b-149d-4200-8bb0-0390565c11e6" }

Expand
필드설명

id

영역에 할당된 고유한 문자열입니다.

domain_root

영역과 관련된 모든 시스템 구성이 있는 루트 풀입니다.

control_pool

내부 감시 알림 메커니즘에 사용됩니다.

gc_pool

가비지 컬렉션 풀입니다.

lc_pool

영역 그룹 구성 중에 지정된 끝점입니다.

log_pool

다중 사이트 관련 데이터 로그 및 mdlog는 이 풀에 저장됩니다.

usage_log_pool

사용자 작업에 대한 통계를 누적하는 사용 로깅입니다.

roles_pool

사용자 역할 정보를 저장합니다.

reshard_pool

버킷 재하드 로그 항목을 저장합니다.

user_keys_pool

풀에는 각 사용자 ID의 액세스 키와 시크릿 키가 포함되어 있습니다.

user_email_pool

풀에는 사용자 ID와 연결된 이메일 주소가 포함됩니다.

user_swift_pool

pool에는 사용자 ID에 대한 Swift 하위 사용자 정보가 포함됩니다.

user_uid_pool

사용자 ID를 저장합니다.

otp_pool

풀은 다중 요소 인증 관련 정보를 저장합니다.

notif_pool

지속적인 전달 알림 관련 정보입니다.

topics_pool

알림 주제 저장.

account_pool

사용자 계정 관련 정보를 저장합니다.

system_key

다중 사이트 동기화에 내부적으로 사용되는 시스템 액세스 및 시크릿 키를 표시합니다.

placement_pools

버킷 인덱스 풀 스토리지 클래스 등을 포함한 기본 및 사용자 정의 배치 정보를 표시합니다.

realm_id

multisite가 구성된 경우 realm id., resharding 등을 표시합니다.

5.9.3.6. 영역 설정

영역을 구성하려면 일련의 Ceph Object Gateway 풀을 지정해야 합니다. 일관성을 위해 영역 이름과 동일한 풀 접두사를 사용하는 것이 좋습니다. 구성에 대한 자세한 내용은 Red Hat Ceph Storage Storage Strategies Guide 의 풀 장을 참조하십시오.

중요

zone은 영역 내에 있을 Ceph Object Gateway 노드에 설정해야 합니다.

영역을 설정하려면 풀로 구성된 JSON 오브젝트를 생성하고 오브젝트를 파일에 저장합니다(예: zone.json;) 다음 명령을 실행하여 ZONE_NAME 을 영역 이름으로 교체합니다.

예제

[ceph: root@host01 /]# radosgw-admin zone set --rgw-zone=test-zone --infile zone.json
Copy to Clipboard Toggle word wrap

여기서 zone.json 은 사용자가 생성한 JSON 파일입니다.

그런 다음 root 로 기간을 업데이트합니다.

예제

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

5.9.3.7. 영역 이름 변경

영역 이름을 변경하려면 영역 이름과 새 영역 이름을 지정합니다. 영역 내의 호스트에서 다음 명령을 실행합니다.

구문

radosgw-admin zone rename --rgw-zone=ZONE_NAME --zone-new-name=NEW_ZONE_NAME
Copy to Clipboard Toggle word wrap

그런 다음 기간을 업데이트합니다.

예제

[ceph: root@host01 /]# radosgw-admin period update --commit
Copy to Clipboard Toggle word wrap

6장. 고급 구성

스토리지 관리자는 Ceph Object Gateway의 고급 기능 일부를 구성할 수 있습니다. 다중 사이트 Ceph Object Gateway를 구성하고 이를 Microsoft Active Directory 및 OpenStack Keystone 서비스와 같은 디렉터리 서비스와 통합할 수 있습니다.

사전 요구 사항

  • 정상 실행 Red Hat Ceph Storage 클러스터.

6.1. LDAP 및 Ceph Object Gateway 구성

Ceph Object Gateway 사용자를 인증하도록 Red Hat Directory Server를 구성하려면 다음 단계를 수행합니다.

6.1.1. Red Hat Directory Server 설치

Java Swing GUI 디렉터리 및 관리 콘솔을 사용하려면 GUI(그래픽 사용자 인터페이스)가 있는 Red Hat Enterprise Linux 9에 Red Hat Directory Server를 설치해야 합니다. 그러나 Red Hat Directory Server는 명령행 인터페이스(CLI)에서만 서비스를 제공할 수 있습니다.

사전 요구 사항

  • RHEL(Red Hat Enterprise Linux)이 서버에 설치되어 있습니다.
  • Directory Server 노드의 FQDN은 DNS 또는 /etc/hosts 파일을 사용하여 확인할 수 있습니다.
  • Directory Server 노드를 Red Hat 서브스크립션 관리 서비스에 등록합니다.
  • Red Hat 계정에서 유효한 Red Hat Directory Server 서브스크립션을 사용할 수 있습니다.

프로세스

  • Red Hat Directory Server 설치 가이드1 장과 2장의 지침을 따르십시오.

6.1.2. Directory Server 방화벽 구성

LDAP 호스트에서 LDAP 클라이언트가 디렉터리 서버에 액세스할 수 있도록 방화벽에서 디렉터리 서버의 보안(636) 포트에 액세스할 수 있는지 확인합니다. 기본 비보안 포트 (389)를 종료한 상태로 둡니다.

# firewall-cmd --zone=public --add-port=636/tcp
# firewall-cmd --zone=public --add-port=636/tcp --permanent
Copy to Clipboard Toggle word wrap

6.1.3. SELinux의 레이블 포트

SELinux가 요청을 차단하지 않도록 하려면 SELinux의 포트에 레이블을 지정합니다. 자세한 내용은 Red Hat Directory Server 10 관리 가이드의 디렉터리 서버 포트 번호 변경 섹션을 참조하십시오.

6.1.4. LDAPS 구성

Ceph Object Gateway는 간단한 ID와 암호를 사용하여 LDAP 서버로 인증하므로 연결에 LDAP에 대한 SSL 인증서가 필요합니다. LDAP용 Directory Server를 구성하려면 Red Hat Directory Server 11 관리 가이드보안 연결 구성 장을 참조하십시오.

LDAP가 작동되면 디렉터리 서버의 인증서를 신뢰하도록 Ceph Object Gateway 서버를 구성합니다.

  1. LDAP 서버의 SSL 인증서에 서명한 CA(인증 기관)의 PEM 형식의 인증서를 추출/ 다운로드합니다.
  2. /etc/openldap/ldap.confTLS_REQCERT 가 설정되어 있지 않은지 확인합니다.
  3. /etc/openldap/ldap.confTLS_CACERTDIR /etc/openldap/certs 설정이 포함되어 있는지 확인합니다.
  4. certutil 명령을 사용하여 AD CA를 /etc/openldap/certs의 저장소에 추가합니다. 예를 들어 CA가 "msad-frog-MSAD-FROG-CA"이고 PEM 형식의 CA 파일이 ldap.pem 인 경우 다음 명령을 사용합니다.

    예제

    # certutil -d /etc/openldap/certs -A -t "TC,," -n "msad-frog-MSAD-FROG-CA" -i /path/to/ldap.pem
    Copy to Clipboard Toggle word wrap

  5. 모든 원격 LDAP 사이트에서 SELinux를 업데이트합니다.

    예제

    # setsebool -P httpd_can_network_connect on
    Copy to Clipboard Toggle word wrap

    참고

    SELinux가 허용 모드에 있는 경우에도 이 설정을 설정해야 합니다.

  6. 인증서 데이터베이스 세계로 읽을 수 있도록 설정합니다.

    예제

    # chmod 644 /etc/openldap/certs/*
    Copy to Clipboard Toggle word wrap

  7. root가 아닌 사용자로 "ldapwhoami" 명령을 사용하여 서버에 연결합니다.

    예제

    $ ldapwhoami -H ldaps://rh-directory-server.example.com -d 9
    Copy to Clipboard Toggle word wrap

    d 9 옵션은 SSL 협상에 문제가 발생한 경우 디버깅 정보를 제공합니다.

6.1.5. gateway 사용자가 있는지 확인합니다.

gateway 사용자를 만들기 전에 Ceph Object Gateway에 사용자가 없는지 확인합니다.

예제

[ceph: root@host01 /]# radosgw-admin metadata list user
Copy to Clipboard Toggle word wrap

사용자 이름은 이 사용자 목록에 없어야 합니다.

6.1.6. 게이트웨이 사용자 추가

사용자 LDAP에 Ceph Object Gateway 사용자를 만듭니다.

프로세스

  1. Ceph Object Gateway에 대한 LDAP 사용자를 만들고 binddn 을 기록합니다. Ceph 개체 게이트웨이는 ceph 사용자를 사용하므로 사용자 이름으로 ceph 를 사용하는 것이 좋습니다. 사용자에게 디렉터리를 검색할 수 있는 권한이 있어야 합니다. Ceph Object Gateway는 rgw_ldap_binddn 에 지정된 대로 이 사용자에게 바인딩합니다.
  2. 사용자 생성이 작동하는지 테스트합니다. 여기서 cephPeople 의 사용자 ID이고 example.com 은 도메인이므로 사용자를 검색할 수 있습니다.

    # ldapsearch -x -D "uid=ceph,ou=People,dc=example,dc=com" -W -H ldaps://example.com -b "ou=People,dc=example,dc=com" -s sub 'uid=ceph'
    Copy to Clipboard Toggle word wrap
  3. 각 게이트웨이 노드에서 사용자 시크릿에 대한 파일을 생성합니다. 예를 들어 시크릿은 /etc/bindpass 가 부여된 파일에 저장할 수 있습니다. 보안을 위해 이 파일의 소유자를 ceph 사용자 및 그룹으로 변경하여 전역에서 읽을 수 없도록 합니다.
  4. rgw_ldap_secret 옵션을 추가합니다.

    구문

    ceph config set client.rgw OPTION VALUE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_secret /etc/bindpass
    Copy to Clipboard Toggle word wrap

  5. 바인딩 암호 파일을 Ceph Object Gateway 컨테이너에 패치하고 Ceph Object Gateway 사양을 다시 적용합니다.

    예제

    service_type: rgw
    service_id: rgw.1
    service_name: rgw.rgw.1
    placement:
      label: rgw
      extra_container_args:
      - -v
      - /etc/bindpass:/etc/bindpass
    Copy to Clipboard Toggle word wrap

    참고

    /etc/bindpass 는 Red Hat Ceph Storage에서 자동으로 제공되지 않으며 가능한 모든 Ceph Object Gateway 인스턴스 노드에서 콘텐츠를 사용할 수 있는지 확인해야 합니다.

6.1.7. LDAP를 사용하도록 게이트웨이 구성

  1. 모든 Ceph 노드에서 다음 명령을 사용하여 Ceph 구성을 변경합니다.

    구문

    ceph config set client.rgw OPTION VALUE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_uri ldaps://:636
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_binddn "ou=poc,dc=example,dc=local"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_searchdn "ou=poc,dc=example,dc=local"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_dnattr "uid"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_s3_auth_use_ldap true
    Copy to Clipboard Toggle word wrap

  2. Ceph Object Gateway를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

6.1.8. 사용자 정의 검색 필터 사용

사용자 지정 검색 필터를 생성하여 rgw_ldap_searchfilter 설정을 사용하여 사용자 액세스를 제한할 수 있습니다. rgw_ldap_searchfilter 설정을 사용하는 방법은 다음 두 가지가 있습니다.

  1. 부분 필터 지정:

    예제

    "objectclass=inetorgperson"
    Copy to Clipboard Toggle word wrap

    Ceph Object Gateway는 토큰에서 사용자 이름과 rgw_ldap_dnattr 값을 사용하여 검색 필터를 생성합니다. 그런 다음 생성된 필터가 rgw_ldap_searchfilter 값의 부분 필터와 결합됩니다. 예를 들어 사용자 이름 및 설정은 최종 검색 필터를 생성합니다.

    예제

    "(&(uid=joe)(objectclass=inetorgperson))"
    Copy to Clipboard Toggle word wrap

    사용자 joe 는 LDAP 디렉터리에 개체 클래스가 있는 경우에만 액세스 권한이 부여되며 유효한 암호를 지정합니다.

  2. 전체 필터 지정:

    전체 필터에는 인증 시도 중에 사용자 이름으로 대체되는 USERNAME 토큰이 포함되어야 합니다. 이 경우 rgw_ldap_dnattr 설정은 사용되지 않습니다. 예를 들어 유효한 사용자를 특정 그룹으로 제한하려면 다음 필터를 사용합니다.

    예제

    "(&(uid=@USERNAME@)(memberOf=cn=ceph-users,ou=groups,dc=mycompany,dc=com))"
    Copy to Clipboard Toggle word wrap

6.1.9. LDAP 서버에 S3 사용자 추가

LDAP 서버의 관리 콘솔에서 S3 클라이언트에서 LDAP 사용자 자격 증명을 사용할 수 있도록 하나 이상의 S3 사용자를 생성합니다. 인증 정보를 S3 클라이언트에 전달할 때 사용할 사용자 이름과 시크릿을 기록해 둡니다.

6.1.10. LDAP 토큰 내보내기

LDAP를 사용하여 Ceph Object Gateway를 실행하는 경우 액세스 토큰이 모두 필요합니다. 그러나 액세스 토큰은 액세스 키 및 시크릿 키에서 생성됩니다. 액세스 키와 시크릿 키를 LDAP 토큰으로 내보냅니다.

  1. 액세스 키를 내보냅니다.

    구문

    export RGW_ACCESS_KEY_ID="USERNAME"
    Copy to Clipboard Toggle word wrap

  2. 시크릿 키를 내보냅니다.

    구문

    export RGW_SECRET_ACCESS_KEY="PASSWORD"
    Copy to Clipboard Toggle word wrap

  3. 토큰을 내보냅니다. LDAP의 경우 ldap 를 토큰 유형(ttype)으로 사용합니다.

    예제

    radosgw-token --encode --ttype=ldap
    Copy to Clipboard Toggle word wrap

    Active Directory의 경우 ad 를 토큰 유형으로 사용합니다.

    예제

    radosgw-token --encode --ttype=ad
    Copy to Clipboard Toggle word wrap

    결과적으로 액세스 토큰인 base-64로 인코딩된 문자열이 생성됩니다. 액세스 키 대신 S3 클라이언트에 이 액세스 토큰을 제공합니다. 시크릿 키는 더 이상 필요하지 않습니다.

  4. 선택 사항: 추가 편의를 위해 S3 클라이언트에서 환경 변수를 사용하는 경우 base-64로 인코딩된 문자열을 RGW_ACCESS_KEY_ID 환경 변수로 내보냅니다.

    예제

    export RGW_ACCESS_KEY_ID="ewogICAgIlJHV19UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAibGRhcCIsCiAgICAgICAgImlkIjogImNlcGgiLAogICAgICAgICJrZXkiOiAiODAwI0dvcmlsbGEiCiAgICB9Cn0K"
    Copy to Clipboard Toggle word wrap

6.1.11. S3 클라이언트로 구성 테스트

Python Boto와 같은 스크립트를 사용하여 Ceph Object Gateway 클라이언트로 구성을 테스트합니다.

절차.

  1. RGW_ACCESS_KEY_ID 환경 변수를 사용하여 Ceph Object Gateway 클라이언트를 구성합니다. 또는 base-64로 인코딩된 문자열을 복사하여 액세스 키로 지정할 수 있습니다. 다음은 구성된 S3 클라이언트의 예입니다.

    예제

    cat .aws/credentials
    
    [default]
    aws_access_key_id = ewogICaGbnjlwe9UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAiYWQiLAogICAgICAgICJpZCI6ICJjZXBoIiwKICAgICAgICAia2V5IjogInBhc3M0Q2VwaCIKICAgIH0KfQo=
    aws_secret_access_key =
    Copy to Clipboard Toggle word wrap

    참고

    시크릿 키는 더 이상 필요하지 않습니다.

  2. aws s3 ls 명령을 실행하여 사용자를 확인합니다.

    예제

    [root@host01 ~]# aws s3 ls --endpoint http://host03
    
    2023-12-11 17:08:50 mybucket
    2023-12-24 14:55:44 mybucket2
    Copy to Clipboard Toggle word wrap

  3. 선택 사항: radosgw-admin 사용자 명령을 실행하여 디렉터리의 사용자를 확인할 수도 있습니다.

    예제

    [root@host01 ~]# radosgw-admin user info --uid dir1
    {
        "user_id": "dir1",
        "display_name": "dir1",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "ldap",
        "mfa_ids": []
    }
    Copy to Clipboard Toggle word wrap

6.2. Active Directory 및 Ceph Object Gateway 구성

다음 단계를 수행하여 Ceph Object Gateway 사용자를 인증하도록 Active Directory 서버를 구성합니다.

6.2.1. Microsoft Active Directory 사용

Ceph Object Gateway LDAP 인증은 Microsoft Active Directory를 포함하여 간단한 바인딩용으로 구성할 수 있는 모든 LDAP 호환 디렉터리 서비스와 호환됩니다. Active Directory는 Ceph Object Gateway가 rgw_ldap_binddn 설정에 구성된 사용자로 바인딩하고 LDAP를 사용하여 보안을 보장하는 점에서 RH Directory 서버를 사용하는 것과 유사합니다.

Active Directory를 구성하는 프로세스는 기본적으로 LDAP 및 Ceph Object Gateway 구성과 동일하지만 일부 Windows별 사용이 있을 수 있습니다.

6.2.2. LDAPS용 Active Directory 구성

Active Directory LDAP 서버는 기본적으로 LDAP를 사용하도록 구성됩니다. Windows Server 2012 이상에서는 Active Directory 인증서 서비스를 사용할 수 있습니다. Active Directory LDAP와 함께 사용할 SSL 인증서를 생성하고 설치하는 방법은 다음 MS Cryostat 문서: LDAP over SSL (LDAPS) 인증서 를 참조하십시오.

참고

Active Directory 호스트에서 포트 636 이 열려 있는지 확인합니다.

6.2.3. gateway 사용자가 있는지 확인합니다.

gateway 사용자를 만들기 전에 Ceph Object Gateway에 사용자가 없는지 확인합니다.

예제

[ceph: root@host01 /]# radosgw-admin metadata list user
Copy to Clipboard Toggle word wrap

사용자 이름은 이 사용자 목록에 없어야 합니다.

6.2.4. 게이트웨이 사용자 추가

사용자 LDAP에 Ceph Object Gateway 사용자를 만듭니다.

프로세스

  1. Ceph Object Gateway에 대한 LDAP 사용자를 만들고 binddn 을 기록합니다. Ceph 개체 게이트웨이는 ceph 사용자를 사용하므로 사용자 이름으로 ceph 를 사용하는 것이 좋습니다. 사용자에게 디렉터리를 검색할 수 있는 권한이 있어야 합니다. Ceph Object Gateway는 rgw_ldap_binddn 에 지정된 대로 이 사용자에게 바인딩합니다.
  2. 사용자 생성이 작동하는지 테스트합니다. 여기서 cephPeople 의 사용자 ID이고 example.com 은 도메인이므로 사용자를 검색할 수 있습니다.

    # ldapsearch -x -D "uid=ceph,ou=People,dc=example,dc=com" -W -H ldaps://example.com -b "ou=People,dc=example,dc=com" -s sub 'uid=ceph'
    Copy to Clipboard Toggle word wrap
  3. 각 게이트웨이 노드에서 사용자 시크릿에 대한 파일을 생성합니다. 예를 들어 시크릿은 /etc/bindpass 가 부여된 파일에 저장할 수 있습니다. 보안을 위해 이 파일의 소유자를 ceph 사용자 및 그룹으로 변경하여 전역에서 읽을 수 없도록 합니다.
  4. rgw_ldap_secret 옵션을 추가합니다.

    구문

    ceph config set client.rgw OPTION VALUE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_secret /etc/bindpass
    Copy to Clipboard Toggle word wrap

  5. 바인딩 암호 파일을 Ceph Object Gateway 컨테이너에 패치하고 Ceph Object Gateway 사양을 다시 적용합니다.

    예제

    service_type: rgw
    service_id: rgw.1
    service_name: rgw.rgw.1
    placement:
      label: rgw
      extra_container_args:
      - -v
      - /etc/bindpass:/etc/bindpass
    Copy to Clipboard Toggle word wrap

    참고

    /etc/bindpass 는 Red Hat Ceph Storage에서 자동으로 제공되지 않으며 가능한 모든 Ceph Object Gateway 인스턴스 노드에서 콘텐츠를 사용할 수 있는지 확인해야 합니다.

6.2.5. Active Directory를 사용하도록 게이트웨이 구성

  1. rgw_ldap_secret 설정을 설정한 후 다음 옵션을 추가합니다.

    구문

    ceph config set client.rgw OPTION VALUE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_uri ldaps://_FQDN_:636
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_binddn "_BINDDN_"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_searchdn "_SEARCHDN_"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_ldap_dnattr "cn"
    [ceph: root@host01 /]# ceph config set client.rgw rgw_s3_auth_use_ldap true
    Copy to Clipboard Toggle word wrap

    rgw_ldap_uri 설정의 경우 FQDN 을 LDAP 서버의 정규화된 도메인 이름으로 대체합니다. LDAP 서버가 두 개 이상 있는 경우 각 도메인을 지정합니다.

    rgw_ldap_binddn 설정의 경우 BINDDN 을 bind 도메인으로 대체합니다. example.com 도메인과 ceph 사용자가 사용자 및 계정 아래에 있으면 다음과 같이 표시됩니다.

    예제

    rgw_ldap_binddn "uid=ceph,cn=users,cn=accounts,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap

    rgw_ldap_searchdn 설정의 경우 SEARCHDN 을 검색 도메인으로 대체합니다. example.com 도메인과 사용자 및 계정 아래의 사용자는 다음과 같습니다.

    rgw_ldap_searchdn "cn=users,cn=accounts,dc=example,dc=com"
    Copy to Clipboard Toggle word wrap
  2. Ceph Object Gateway를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

6.2.6. LDAP 서버에 S3 사용자 추가

LDAP 서버의 관리 콘솔에서 S3 클라이언트에서 LDAP 사용자 자격 증명을 사용할 수 있도록 하나 이상의 S3 사용자를 생성합니다. 인증 정보를 S3 클라이언트에 전달할 때 사용할 사용자 이름과 시크릿을 기록해 둡니다.

6.2.7. LDAP 토큰 내보내기

LDAP를 사용하여 Ceph Object Gateway를 실행하는 경우 액세스 토큰이 모두 필요합니다. 그러나 액세스 토큰은 액세스 키 및 시크릿 키에서 생성됩니다. 액세스 키와 시크릿 키를 LDAP 토큰으로 내보냅니다.

  1. 액세스 키를 내보냅니다.

    구문

    export RGW_ACCESS_KEY_ID="USERNAME"
    Copy to Clipboard Toggle word wrap

  2. 시크릿 키를 내보냅니다.

    구문

    export RGW_SECRET_ACCESS_KEY="PASSWORD"
    Copy to Clipboard Toggle word wrap

  3. 토큰을 내보냅니다. LDAP의 경우 ldap 를 토큰 유형(ttype)으로 사용합니다.

    예제

    radosgw-token --encode --ttype=ldap
    Copy to Clipboard Toggle word wrap

    Active Directory의 경우 ad 를 토큰 유형으로 사용합니다.

    예제

    radosgw-token --encode --ttype=ad
    Copy to Clipboard Toggle word wrap

    결과적으로 액세스 토큰인 base-64로 인코딩된 문자열이 생성됩니다. 액세스 키 대신 S3 클라이언트에 이 액세스 토큰을 제공합니다. 시크릿 키는 더 이상 필요하지 않습니다.

  4. 선택 사항: 추가 편의를 위해 S3 클라이언트에서 환경 변수를 사용하는 경우 base-64로 인코딩된 문자열을 RGW_ACCESS_KEY_ID 환경 변수로 내보냅니다.

    예제

    export RGW_ACCESS_KEY_ID="ewogICAgIlJHV19UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAibGRhcCIsCiAgICAgICAgImlkIjogImNlcGgiLAogICAgICAgICJrZXkiOiAiODAwI0dvcmlsbGEiCiAgICB9Cn0K"
    Copy to Clipboard Toggle word wrap

6.2.8. S3 클라이언트로 구성 테스트

Python Boto와 같은 스크립트를 사용하여 Ceph Object Gateway 클라이언트로 구성을 테스트합니다.

절차.

  1. RGW_ACCESS_KEY_ID 환경 변수를 사용하여 Ceph Object Gateway 클라이언트를 구성합니다. 또는 base-64로 인코딩된 문자열을 복사하여 액세스 키로 지정할 수 있습니다. 다음은 구성된 S3 클라이언트의 예입니다.

    예제

    cat .aws/credentials
    
    [default]
    aws_access_key_id = ewogICaGbnjlwe9UT0tFTiI6IHsKICAgICAgICAidmVyc2lvbiI6IDEsCiAgICAgICAgInR5cGUiOiAiYWQiLAogICAgICAgICJpZCI6ICJjZXBoIiwKICAgICAgICAia2V5IjogInBhc3M0Q2VwaCIKICAgIH0KfQo=
    aws_secret_access_key =
    Copy to Clipboard Toggle word wrap

    참고

    시크릿 키는 더 이상 필요하지 않습니다.

  2. aws s3 ls 명령을 실행하여 사용자를 확인합니다.

    예제

    [root@host01 ~]# aws s3 ls --endpoint http://host03
    
    2023-12-11 17:08:50 mybucket
    2023-12-24 14:55:44 mybucket2
    Copy to Clipboard Toggle word wrap

  3. 선택 사항: radosgw-admin 사용자 명령을 실행하여 디렉터리의 사용자를 확인할 수도 있습니다.

    예제

    [root@host01 ~]# radosgw-admin user info --uid dir1
    {
        "user_id": "dir1",
        "display_name": "dir1",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "ldap",
        "mfa_ids": []
    }
    Copy to Clipboard Toggle word wrap

6.3. Ceph Object Gateway 및 OpenStack Keystone

스토리지 관리자는 OpenStack의 Keystone 인증 서비스를 사용하여 Ceph Object Gateway를 통해 사용자를 인증할 수 있습니다. Ceph Object Gateway를 구성하려면 먼저 Keystone을 구성해야 합니다. 이렇게 하면 Swift 서비스가 활성화되고 Keystone 서비스가 Ceph Object Gateway를 가리킵니다. 다음으로 Keystone 서비스의 인증 요청을 수락하도록 Ceph Object Gateway를 구성해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat OpenStack Platform 환경.
  • 실행 중인 Red Hat Ceph Storage 환경.
  • 실행 중인 Ceph Object Gateway 환경.

6.3.1. Keystone 인증의 역할

OpenStack Keystone 서비스는 admin,member, reader 의 세 가지 역할을 제공합니다. 이러한 역할은 계층적입니다. admin 역할이 있는 사용자는 멤버 역할의 기능을 상속하고 member 역할이 있는 사용자는 reader 역할의 기능을 상속합니다.

참고

멤버 역할의 읽기 권한은 해당 역할이 속한 프로젝트의 오브젝트에만 적용됩니다.

admin

admin 역할은 특정 범위 내에서 가장 높은 수준의 권한 부여를 위해 예약되어 있습니다. 이는 일반적으로 리소스 또는 API에 대한 모든 생성, 읽기, 업데이트 또는 삭제 작업을 포함합니다.

멤버

member 역할은 기본적으로 직접 사용되지 않습니다. 배포 중에 유연성을 제공하고 관리자에 대한 책임을 줄이는 데 도움이 됩니다.

예를 들어 시스템 멤버가 서비스 및 엔드포인트를 업데이트할 수 있도록 기본 멤버 역할 및 간단한 정책 재정의를 사용하여 배포에 대한 정책을 재정의할 수 있습니다. 이는 adminreader 역할 간의 권한 부여 계층을 제공합니다.

reader

reader 역할은 범위에 관계없이 읽기 전용 작업에 대해 예약되어 있습니다.

주의

reader 를 사용하여 이미지 라이센스 키, 관리 이미지 데이터, 관리 볼륨 메타데이터, 애플리케이션 인증 정보 및 시크릿과 같은 중요한 정보에 액세스하는 경우 의도하지 않게 중요한 정보를 노출할 수 있습니다. 따라서 이러한 리소스를 노출하는 API는 reader 역할의 영향을 신중하게 고려하고 memberadmin 역할에 대한 액세스를 적절하게 지연해야 합니다.

6.3.2. Keystone 인증 및 Ceph Object Gateway

OpenStack Keystone을 사용하여 사용자를 인증하는 조직은 Ceph Object Gateway와 Keystone을 통합할 수 있습니다. Ceph Object Gateway를 사용하면 게이트웨이에서 Keystone 토큰을 수락하고 사용자를 인증하며 해당 Ceph Object Gateway 사용자를 만들 수 있습니다. Keystone에서 토큰을 검증할 때 게이트웨이는 인증된 사용자를 고려합니다.

이점

  • Keystone을 사용하여 사용자에게 admin,member, reader 역할 할당.
  • Ceph Object Gateway에서 자동 사용자 생성
  • Keystone으로 사용자 관리.
  • Ceph Object Gateway는 Keystone에서 취소된 토큰 목록을 주기적으로 쿼리합니다.

6.3.3. Swift 서비스 생성

Ceph Object Gateway를 구성하기 전에 Swift 서비스가 활성화되고 Ceph Object Gateway를 가리키도록 Keystone을 구성합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 소프트웨어 리포지토리에 액세스합니다.
  • OpenStack 컨트롤러 노드에 대한 루트 수준 액세스.

프로세스

  • Swift 서비스를 생성합니다.

    [root@swift~]# openstack service create --name=swift --description="Swift Service" object-store
    Copy to Clipboard Toggle word wrap

    서비스를 생성하면 서비스 설정이 에코됩니다.

    Expand
    표 6.1. 예제
    필드현재의

    description

    Swift 서비스

    enabled

    True

    id

    37c4c0e79571404cb4644201a4a6e5ee

    name

    swift

    type

    object-store

6.3.4. Ceph Object Gateway 엔드포인트 설정

Swift 서비스를 생성한 후 서비스를 Ceph Object Gateway를 가리킵니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 소프트웨어 리포지토리에 액세스합니다.
  • Red Hat OpenStack Platform 17.0 환경에서 실행 중인 Swift 서비스.

프로세스

  • Ceph Object Gateway를 가리키는 OpenStack 끝점을 만듭니다.

    구문

    openstack endpoint create --region REGION_NAME swift admin "URL"
    openstack endpoint create --region REGION_NAME swift public "URL"
    openstack endpoint create --region REGION_NAME swift internal "URL"
    Copy to Clipboard Toggle word wrap

    REGION_NAME 을 게이트웨이 영역 그룹 이름 또는 지역 이름의 이름으로 바꿉니다. URL 을 Ceph Object Gateway에 적합한 URL로 바꿉니다.

    예제

    [root@osp ~]# openstack endpoint create --region us-west swift admin "http://radosgw.example.com:8080/swift/v1"
    [root@osp ~]# openstack endpoint create --region us-west swift public "http://radosgw.example.com:8080/swift/v1"
    [root@osp ~]# openstack endpoint create --region us-west swift internal "http://radosgw.example.com:8080/swift/v1"
    Copy to Clipboard Toggle word wrap

    Expand
    필드현재의

    adminurl

    http://radosgw.example.com:8080/swift/v1

    id

    e4249d2b60e44743a67b5e5b38c18dd3

    internalurl

    http://radosgw.example.com:8080/swift/v1

    publicurl

    http://radosgw.example.com:8080/swift/v1

    region

    us-west

    service_id

    37c4c0e79571404cb4644201a4a6e5ee

    service_name

    swift

    service_type

    object-store

    엔드포인트를 설정하면 서비스 엔드포인트 설정이 출력됩니다.

6.3.5. Openstack에서 Ceph Object Gateway 엔드포인트를 사용하고 있는지 확인

Swift 서비스를 생성하고 엔드포인트를 설정한 후 엔드포인트를 표시하여 모든 설정이 올바른지 확인합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 소프트웨어 리포지토리에 액세스합니다.

프로세스

  1. Swift 서비스 아래의 엔드포인트를 나열합니다.

    [root@swift~]# openstack endpoint list --service=swift
    Copy to Clipboard Toggle word wrap
  2. 이전 명령에 나열된 끝점에 대한 설정을 확인합니다.

    구문

    [root@swift~]# openstack endpoint show ENDPOINT_ID
    Copy to Clipboard Toggle word wrap

    엔드포인트를 표시하면 엔드포인트 설정 및 서비스 설정이 출력됩니다.

    Expand
    표 6.2. 예제
    필드현재의

    adminurl

    http://radosgw.example.com:8080/swift/v1

    enabled

    True

    id

    e4249d2b60e44743a67b5e5b38c18dd3

    internalurl

    http://radosgw.example.com:8080/swift/v1

    publicurl

    http://radosgw.example.com:8080/swift/v1

    region

    us-west

    service_id

    37c4c0e79571404cb4644201a4a6e5ee

    service_name

    swift

    service_type

    object-store

추가 리소스

  • 엔드포인트에 대한 자세한 내용은 Red Hat OpenStack 가이드의 끝점 표시를 참조하십시오.

6.3.6. Keystone SSL을 사용하도록 Ceph Object Gateway 구성

Keystone에서 사용하는 OpenSSL 인증서를 변환하는 경우 Keystone에서 사용할 Ceph Object Gateway가 구성됩니다. Ceph Object Gateway가 OpenStack의 Keystone 인증과 상호 작용하면 Keystone이 자체 서명된 SSL 인증서로 종료됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 소프트웨어 리포지토리에 액세스합니다.

프로세스

  1. OpenSSL 인증서를 nss db 형식으로 변환합니다.

    예제

    [root@osp ~]# mkdir /var/ceph/nss
    
    [root@osp ~]# openssl x509 -in /etc/keystone/ssl/certs/ca.pem -pubkey | \
        certutil -d /var/ceph/nss -A -n ca -t "TCu,Cu,Tuw"
    
    [root@osp ~]# openssl x509 -in /etc/keystone/ssl/certs/signing_cert.pem -pubkey | \
        certutil -A -d /var/ceph/nss -n signing_cert -t "P,P,P"
    Copy to Clipboard Toggle word wrap

  2. Ceph Object Gateway를 실행하는 노드에 Keystone의 SSL 인증서를 설치합니다. 또는 구성 가능한 rgw_keystone_verify_ssl 설정 값을 false 로 설정합니다.

    rgw_keystone_verify_sslfalse 로 설정하면 게이트웨이가 인증서 확인을 시도하지 않습니다.

6.3.7. Keystone 인증을 사용하도록 Ceph Object Gateway 구성

OpenStack의 Keystone 인증을 사용하도록 Red Hat Ceph Storage를 구성합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 소프트웨어 리포지토리에 액세스합니다.
  • 프로덕션 환경에 대한 관리자 권한이 있어야 합니다.

프로세스

  1. 각 게이트웨이 인스턴스에 대해 다음을 수행합니다.

    1. nss_db_path 설정을 NSS 데이터베이스가 저장된 경로로 설정합니다.

      예제

      [ceph: root@host01 /]# ceph config set client.rgw nss_db_path "/var/lib/ceph/radosgw/ceph-rgw.rgw01/nss"
      Copy to Clipboard Toggle word wrap

  2. 인증 인증 정보를 제공합니다.

    시스템 관리자가 OpenStack 서비스를 구성하는 방식과 유사하게 OpenStack ID API의 Keystone 서비스 테넌트, 사용자 및 암호를 구성할 수 있습니다. 사용자 이름과 암호를 제공하면 rgw_keystone_admin_token 설정에 공유 시크릿을 제공하지 않습니다.

    중요

    Red Hat은 프로덕션 환경에서 관리자 토큰을 통한 인증을 비활성화하는 것이 좋습니다. 서비스 테넌트 자격 증명에는 관리자 권한이 있어야 합니다.

    필요한 구성 옵션은 다음과 같습니다.

    구문

    ceph config set client.rgw rgw_keystone_verify_ssl TRUE/FALSE
    ceph config set client.rgw rgw_s3_auth_use_keystone TRUE/FALSE
    ceph config set client.rgw rgw_keystone_api_version API_VERSION
    ceph config set client.rgw rgw_keystone_url KEYSTONE_URL:ADMIN_PORT
    ceph config set client.rgw rgw_keystone_accepted_roles ACCEPTED_ROLES_
    ceph config set client.rgw rgw_keystone_accepted_admin_roles ACCEPTED_ADMIN_ROLES
    ceph config set client.rgw rgw_keystone_admin_domain default
    ceph config set client.rgw rgw_keystone_admin_project SERVICE_NAME
    ceph config set client.rgw rgw_keystone_admin_user KEYSTONE_TENANT_USER_NAME
    ceph config set client.rgw rgw_keystone_admin_password KEYSTONE_TENANT_USER_PASSWORD
    ceph config set client.rgw rgw_keystone_implicit_tenants KEYSTONE_IMPLICIT_TENANT_NAME
    ceph config set client.rgw rgw_swift_versioning_enabled TRUE/FALSE
    ceph config set client.rgw rgw_swift_enforce_content_length TRUE/FALSE
    ceph config set client.rgw rgw_swift_account_in_url TRUE/FALSE
    ceph config set client.rgw rgw_trust_forwarded_https TRUE/FALSE
    ceph config set client.rgw rgw_max_attr_name_len MAXIMUM_LENGTH_OF_METADATA_NAMES
    ceph config set client.rgw rgw_max_attrs_num_in_req MAXIMUM_NUMBER_OF_METADATA_ITEMS
    ceph config set client.rgw rgw_max_attr_size MAXIMUM_LENGTH_OF_METADATA_VALUE
    ceph config set client.rgw rgw_keystone_accepted_reader_roles SwiftSystemReader
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_verify_ssl false
    [ceph: root@host01 /]# ceph config set client.rgw rgw_s3_auth_use_keystone true
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_api_version 3
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_url http://<public Keystone endpoint>:5000/
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_accepted_roles 'member, Member, admin'
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_accepted_admin_roles 'ResellerAdmin, swiftoperator'
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_admin_domain default
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_admin_project service
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_admin_user swift
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_admin_password password
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_implicit_tenants true
    [ceph: root@host01 /]# ceph config set client.rgw rgw_swift_versioning_enabled  true
    [ceph: root@host01 /]# ceph config set client.rgw rgw_swift_enforce_content_length true
    [ceph: root@host01 /]# ceph config set client.rgw rgw_swift_account_in_url true
    [ceph: root@host01 /]# ceph config set client.rgw rgw_trust_forwarded_https true
    [ceph: root@host01 /]# ceph config set client.rgw rgw_max_attr_name_len 128
    [ceph: root@host01 /]# ceph config set client.rgw rgw_max_attrs_num_in_req 90
    [ceph: root@host01 /]# ceph config set client.rgw rgw_max_attr_size  1024
    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_accepted_reader_roles SwiftSystemReader
    Copy to Clipboard Toggle word wrap

    Ceph Object Gateway 사용자는 Keystone 테넌트에 매핑됩니다. Keystone 사용자에게는 단일 테넌트보다 다양한 역할이 할당될 수 있습니다. Ceph Object Gateway가 티켓을 받으면 테넌트와 해당 티켓에 할당된 사용자 역할을 확인하고 rgw_keystone_accepted_roles 구성 가능에 따라 요청을 수락하거나 거부합니다.

6.3.8. Ceph Object Gateway 데몬 다시 시작

활성 구성 변경 사항은 Ceph Object Gateway를 다시 시작해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 소프트웨어 리포지토리에 액세스합니다.
  • 프로덕션 환경에 대한 관리자 권한입니다.

프로세스

  • Ceph 구성 파일을 저장하고 각 Ceph 노드에 배포하면 Ceph Object Gateway 인스턴스를 다시 시작합니다.

    참고

    NAME 열에 있는 ceph orch ps 명령의 출력을 사용하여 SERVICE_TYPE.ID 정보를 가져옵니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

7장. 암호화 및 압축을 위한 QAT 가속

Intel QAT(QuickAssist Technology)는 실제 암호화 및 압축 요청을 하드웨어 QuickAssist 가속기에 오프로드하여 확장된 가속화 암호화 및 압축 서비스를 제공할 수 있으며, 이는 이러한 특정 컴퓨팅 집약적 워크로드의 일반 용도 CPU보다 비용 및 전력 측면에서 더 효율적입니다.

중요

QAT는 Red Hat Ceph Storage 7.1(Greenfield 전용)의 새로운 설정에서만 구성할 수 있습니다. QAT Ceph Object Gateway 데몬은 비QAT(일반) Ceph Object Gateway 데몬과 동일한 클러스터에서 구성할 수 없습니다.

중요

Ceph Object Gateway의 하드웨어 가속 압축에는 QAT 장치가 있는 Sapphire 또는 Emerald Rapids Xeon CPU (또는 최신)에 RHEL 9.4가 필요합니다. 자세한 내용은 Intel Ark 를 참조하십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object 게이트웨이가 설치되어 있어야 합니다.
  • 'GRUB'는 intel_iommu 매개변수를 전달하도록 구성되어 있습니다.

    grubby --update-kernel=ALL --args="intel_iommu=on"
    Copy to Clipboard Toggle word wrap

7.1. QAT 서비스 설정

Ceph Object Gateway 오브젝트를 암호화하고 압축하도록 QAT 서비스를 설정할 수 있습니다.

프로세스

  1. qatlib-service,qatlib,qatzipqatengine 패키지를 설치합니다.

    # dnf install -y qatlib-service qatlib qatzip qatengine
    Copy to Clipboard Toggle word wrap
  2. HOST의 'QAT' 그룹에 'root'를 추가합니다.

    # usermod -aG qat root
    Copy to Clipboard Toggle word wrap
  3. 아래 데이터와 함께 limits.conf 파일이 있는지 확인합니다.

    1. 데이터 암호화를 수행하려면 구성 파일에서 ServicesEnabledasym 으로 설정되어 있는지 확인합니다.

      # cat /etc/sysconfig/qat
      
      ServicesEnabled=asym
      POLICY=8
      Copy to Clipboard Toggle word wrap
    2. 데이터 압축을 수행하려면 구성 파일에서 ServicesEnableddc 로 설정되어 있는지 확인합니다.

      # cat /etc/sysconfig/qat
      
      ServicesEnabled=dc
      POLICY=8
      Copy to Clipboard Toggle word wrap
    3. 데이터 암호화 및 압축을 수행하려면 구성 파일에서 ServicesEnabled대칭dc 설정되어 있는지 확인합니다.

      # cat /etc/sysconfig/qat
      
      ServicesEnabled=asym,dc
      POLICY=8
      Copy to Clipboard Toggle word wrap
  4. 아래 데이터로 limits.conf 파일을 구성합니다.

    # sudo vim /etc/security/limits.conf
    
    ...
    root - memlock 500000
    ceph - memlock 500000
    ...
    Copy to Clipboard Toggle word wrap
  5. limits.conf 파일에서 구성을 활성화합니다.

    # sudo su -l $USER
    Copy to Clipboard Toggle word wrap
  6. QAT 서비스를 활성화합니다.

    # systemctl enable qat
    Copy to Clipboard Toggle word wrap
  7. 노드를 재부팅합니다.

    # systemctl reboot
    Copy to Clipboard Toggle word wrap
  8. 사양 파일을 생성하고 Ceph Object Gateway의 podman에 추가 인수를 전달합니다.

    참고

    다음 명령을 사용하여 장치 목록을 생성할 수 있습니다.

    --device /dev/vfio --device /dev/qat_adf_ctl $(i in ls /dev/vfio/*) | grep 'dev' | grep -v ':' ; echo --device $i;

    예제

    service_type: rgw
    service_id: rgw_qat
    placement:
      label: rgw
    extra_container_args:
      - "-v /etc/group:/etc/group:ro"
      - "--group-add=keep-groups"
      - "--cap-add=SYS_ADMIN"
      - "--cap-add=SYS_PTRACE"
      - "--cap-add=IPC_LOCK"
      - "--security-opt seccomp=unconfined"
      - "--ulimit memlock=209715200:209715200"
      - "--device=/dev/qat_adf_ctl:/dev/qat_adf_ctl"
      - "--device=/dev/vfio/vfio:/dev/vfio/vfio"
      - "--device=/dev/vfio/333:/dev/vfio/333"
      - "--device=/dev/vfio/334:/dev/vfio/334"
      - "--device=/dev/vfio/335:/dev/vfio/335"
      - "--device=/dev/vfio/336:/dev/vfio/336"
      - "--device=/dev/vfio/337:/dev/vfio/337"
      - "--device=/dev/vfio/338:/dev/vfio/338"
      - "--device=/dev/vfio/339:/dev/vfio/339"
      - "--device=/dev/vfio/340:/dev/vfio/340"
      - "--device=/dev/vfio/341:/dev/vfio/341"
      - "--device=/dev/vfio/342:/dev/vfio/342"
      - "--device=/dev/vfio/343:/dev/vfio/343"
      - "--device=/dev/vfio/344:/dev/vfio/344"
      - "--device=/dev/vfio/345:/dev/vfio/345"
      - "--device=/dev/vfio/346:/dev/vfio/346"
      - "--device=/dev/vfio/347:/dev/vfio/347"
      - "--device=/dev/vfio/348:/dev/vfio/348"
      - "--device=/dev/vfio/349:/dev/vfio/349"
      - "--device=/dev/vfio/350:/dev/vfio/350"
      - "--device=/dev/vfio/351:/dev/vfio/351"
      - "--device=/dev/vfio/352:/dev/vfio/352"
      - "--device=/dev/vfio/353:/dev/vfio/353"
      - "--device=/dev/vfio/354:/dev/vfio/354"
      - "--device=/dev/vfio/355:/dev/vfio/355"
      - "--device=/dev/vfio/356:/dev/vfio/356"
      - "--device=/dev/vfio/357:/dev/vfio/357"
      - "--device=/dev/vfio/358:/dev/vfio/358"
      - "--device=/dev/vfio/359:/dev/vfio/359"
      - "--device=/dev/vfio/360:/dev/vfio/360"
      - "--device=/dev/vfio/361:/dev/vfio/361"
      - "--device=/dev/vfio/362:/dev/vfio/362"
      - "--device=/dev/vfio/363:/dev/vfio/363"
      - "--device=/dev/vfio/364:/dev/vfio/364"
      - "--device=/dev/vfio/365:/dev/vfio/365"
      - "--device=/dev/vfio/366:/dev/vfio/366"
      - "--device=/dev/vfio/367:/dev/vfio/367"
      - "--device=/dev/vfio/368:/dev/vfio/368"
      - "--device=/dev/vfio/369:/dev/vfio/369"
      - "--device=/dev/vfio/370:/dev/vfio/370"
      - "--device=/dev/vfio/371:/dev/vfio/371"
      - "--device=/dev/vfio/372:/dev/vfio/372"
      - "--device=/dev/vfio/373:/dev/vfio/373"
      - "--device=/dev/vfio/374:/dev/vfio/374"
      - "--device=/dev/vfio/375:/dev/vfio/375"
      - "--device=/dev/vfio/376:/dev/vfio/376"
      - "--device=/dev/vfio/377:/dev/vfio/377"
      - "--device=/dev/vfio/378:/dev/vfio/378"
      - "--device=/dev/vfio/379:/dev/vfio/379"
      - "--device=/dev/vfio/380:/dev/vfio/380"
      - "--device=/dev/vfio/381:/dev/vfio/381"
      - "--device=/dev/vfio/382:/dev/vfio/382"
      - "--device=/dev/vfio/383:/dev/vfio/383"
      - "--device=/dev/vfio/384:/dev/vfio/384"
      - "--device=/dev/vfio/385:/dev/vfio/385"
      - "--device=/dev/vfio/386:/dev/vfio/386"
      - "--device=/dev/vfio/387:/dev/vfio/387"
      - "--device=/dev/vfio/388:/dev/vfio/388"
      - "--device=/dev/vfio/389:/dev/vfio/389"
      - "--device=/dev/vfio/390:/dev/vfio/390"
      - "--device=/dev/vfio/391:/dev/vfio/391"
      - "--device=/dev/vfio/392:/dev/vfio/392"
      - "--device=/dev/vfio/393:/dev/vfio/393"
      - "--device=/dev/vfio/394:/dev/vfio/394"
      - "--device=/dev/vfio/395:/dev/vfio/395"
      - "--device=/dev/vfio/396:/dev/vfio/396"
      - "--device=/dev/vfio/devices/vfio0:/dev/vfio/devices/vfio0"
      - "--device=/dev/vfio/devices/vfio1:/dev/vfio/devices/vfio1"
      - "--device=/dev/vfio/devices/vfio2:/dev/vfio/devices/vfio2"
      - "--device=/dev/vfio/devices/vfio3:/dev/vfio/devices/vfio3"
      - "--device=/dev/vfio/devices/vfio4:/dev/vfio/devices/vfio4"
      - "--device=/dev/vfio/devices/vfio5:/dev/vfio/devices/vfio5"
      - "--device=/dev/vfio/devices/vfio6:/dev/vfio/devices/vfio6"
      - "--device=/dev/vfio/devices/vfio7:/dev/vfio/devices/vfio7"
      - "--device=/dev/vfio/devices/vfio8:/dev/vfio/devices/vfio8"
      - "--device=/dev/vfio/devices/vfio9:/dev/vfio/devices/vfio9"
      - "--device=/dev/vfio/devices/vfio10:/dev/vfio/devices/vfio10"
      - "--device=/dev/vfio/devices/vfio11:/dev/vfio/devices/vfio11"
      - "--device=/dev/vfio/devices/vfio12:/dev/vfio/devices/vfio12"
      - "--device=/dev/vfio/devices/vfio13:/dev/vfio/devices/vfio13"
      - "--device=/dev/vfio/devices/vfio14:/dev/vfio/devices/vfio14"
      - "--device=/dev/vfio/devices/vfio15:/dev/vfio/devices/vfio15"
      - "--device=/dev/vfio/devices/vfio16:/dev/vfio/devices/vfio16"
      - "--device=/dev/vfio/devices/vfio17:/dev/vfio/devices/vfio17"
      - "--device=/dev/vfio/devices/vfio18:/dev/vfio/devices/vfio18"
      - "--device=/dev/vfio/devices/vfio19:/dev/vfio/devices/vfio19"
      - "--device=/dev/vfio/devices/vfio20:/dev/vfio/devices/vfio20"
      - "--device=/dev/vfio/devices/vfio21:/dev/vfio/devices/vfio21"
      - "--device=/dev/vfio/devices/vfio22:/dev/vfio/devices/vfio22"
      - "--device=/dev/vfio/devices/vfio23:/dev/vfio/devices/vfio23"
      - "--device=/dev/vfio/devices/vfio24:/dev/vfio/devices/vfio24"
      - "--device=/dev/vfio/devices/vfio25:/dev/vfio/devices/vfio25"
      - "--device=/dev/vfio/devices/vfio26:/dev/vfio/devices/vfio26"
      - "--device=/dev/vfio/devices/vfio27:/dev/vfio/devices/vfio27"
      - "--device=/dev/vfio/devices/vfio28:/dev/vfio/devices/vfio28"
      - "--device=/dev/vfio/devices/vfio29:/dev/vfio/devices/vfio29"
      - "--device=/dev/vfio/devices/vfio30:/dev/vfio/devices/vfio30"
      - "--device=/dev/vfio/devices/vfio31:/dev/vfio/devices/vfio31"
      - "--device=/dev/vfio/devices/vfio32:/dev/vfio/devices/vfio32"
      - "--device=/dev/vfio/devices/vfio33:/dev/vfio/devices/vfio33"
      - "--device=/dev/vfio/devices/vfio34:/dev/vfio/devices/vfio34"
      - "--device=/dev/vfio/devices/vfio35:/dev/vfio/devices/vfio35"
      - "--device=/dev/vfio/devices/vfio36:/dev/vfio/devices/vfio36"
      - "--device=/dev/vfio/devices/vfio37:/dev/vfio/devices/vfio37"
      - "--device=/dev/vfio/devices/vfio38:/dev/vfio/devices/vfio38"
      - "--device=/dev/vfio/devices/vfio39:/dev/vfio/devices/vfio39"
      - "--device=/dev/vfio/devices/vfio40:/dev/vfio/devices/vfio40"
      - "--device=/dev/vfio/devices/vfio41:/dev/vfio/devices/vfio41"
      - "--device=/dev/vfio/devices/vfio42:/dev/vfio/devices/vfio42"
      - "--device=/dev/vfio/devices/vfio43:/dev/vfio/devices/vfio43"
      - "--device=/dev/vfio/devices/vfio44:/dev/vfio/devices/vfio44"
      - "--device=/dev/vfio/devices/vfio45:/dev/vfio/devices/vfio45"
      - "--device=/dev/vfio/devices/vfio46:/dev/vfio/devices/vfio46"
      - "--device=/dev/vfio/devices/vfio47:/dev/vfio/devices/vfio47"
      - "--device=/dev/vfio/devices/vfio48:/dev/vfio/devices/vfio48"
      - "--device=/dev/vfio/devices/vfio49:/dev/vfio/devices/vfio49"
      - "--device=/dev/vfio/devices/vfio50:/dev/vfio/devices/vfio50"
      - "--device=/dev/vfio/devices/vfio51:/dev/vfio/devices/vfio51"
      - "--device=/dev/vfio/devices/vfio52:/dev/vfio/devices/vfio52"
      - "--device=/dev/vfio/devices/vfio53:/dev/vfio/devices/vfio53"
      - "--device=/dev/vfio/devices/vfio54:/dev/vfio/devices/vfio54"
      - "--device=/dev/vfio/devices/vfio55:/dev/vfio/devices/vfio55"
      - "--device=/dev/vfio/devices/vfio56:/dev/vfio/devices/vfio56"
      - "--device=/dev/vfio/devices/vfio57:/dev/vfio/devices/vfio57"
      - "--device=/dev/vfio/devices/vfio58:/dev/vfio/devices/vfio58"
      - "--device=/dev/vfio/devices/vfio59:/dev/vfio/devices/vfio59"
      - "--device=/dev/vfio/devices/vfio60:/dev/vfio/devices/vfio60"
      - "--device=/dev/vfio/devices/vfio61:/dev/vfio/devices/vfio61"
      - "--device=/dev/vfio/devices/vfio62:/dev/vfio/devices/vfio62"
      - "--device=/dev/vfio/devices/vfio63:/dev/vfio/devices/vfio63"
    networks:
    - 172.17.8.0/24
    spec:
      rgw_frontend_port: 8000
    Copy to Clipboard Toggle word wrap

7.2. QAT 기반 암호화

OpenSSL의 QAT 기반 암호화를 사용하여 Ceph Object Gateway에서 오브젝트를 암호화할 수 있습니다.

프로세스

  1. QAT 기반 암호화를 활성화하려면 Ceph 구성 파일을 편집하여 QAT 기반 암호화 플러그인을 사용합니다.

    구문

    plugin crypto accelerator = crypto_qat
    Copy to Clipboard Toggle word wrap

7.3. QAT 기반 압축

QAT 가속 툴 클래스를 사용하여 Ceph Object Gateway에서 오브젝트를 압축할 수 있습니다.

프로세스

  1. QAT 기반 압축을 활성화하려면 Ceph 구성 파일을 편집하여 압축에 대한 QAT 지원을 활성화합니다.

    구문

    qat compressor enabled=true
    Copy to Clipboard Toggle word wrap

8장. 보안

스토리지 관리자는 스토리지 클러스터 환경을 보호하는 것이 중요합니다. Red Hat Ceph Storage는 Ceph Object Gateway 액세스 지점을 보호하는 암호화 및 키 관리를 제공합니다.

사전 요구 사항

  • 정상 실행 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.

8.1. SSE(Server-Side Encryption)

Ceph Object Gateway는 S3 API(애플리케이션 프로그래밍 인터페이스)에 대해 업로드된 오브젝트의 서버 측 암호화를 지원합니다. 서버 측 암호화는 S3 클라이언트가 암호화되지 않은 형식으로 HTTP를 통해 데이터를 전송하고 Ceph Object Gateway는 해당 데이터를 Red Hat Ceph Storage 클러스터에 암호화된 형식으로 저장합니다.

참고
  • Red Hat은 SLO(Dynamic Large Object) 또는 DLO(Dynamic Large Object)의 S3 개체 암호화를 지원하지 않습니다.
  • 현재 SSE(Server-Side Encryption) 모드 중 어느 것도 CopyObject 에 대한 지원을 구현하지 않았습니다. 현재 개발 중입니다 [BZ#2149450].
중요

서버 측 암호화는 알려진 문제로 인해 다중 사이트 복제와 호환되지 않습니다. 이 문제는 향후 릴리스에서 해결될 예정입니다. 자세한 내용은 알려진 문제-Mult-site Object Gateway 를 참조하십시오.

중요

암호화를 사용하려면 클라이언트 요청이 SSL 연결을 통해 요청을 보내야 합니다. Ceph Object Gateway에서 SSL을 사용하지 않는 한 Red Hat은 클라이언트의 S3 암호화를 지원하지 않습니다. 그러나 테스트를 위해 관리자는 ceph config set client.rgw 명령을 사용하여 rgw_crypt_require_ssl 구성 설정을 false 로 설정한 다음 Ceph Object Gateway 인스턴스를 다시 시작하여 테스트 중에 SSL을 비활성화할 수 있습니다.

프로덕션 환경에서는 SSL을 통해 암호화된 요청을 보내지 못할 수 있습니다. 이러한 경우 서버 측 암호화와 함께 HTTP를 사용하여 요청을 보냅니다.

서버 측 암호화를 사용하여 HTTP를 구성하는 방법에 대한 자세한 내용은 아래의 추가 리소스 섹션을 참조하십시오.

암호화 키 관리를 위한 세 가지 옵션이 있습니다.

고객 제공 키

S3 클라이언트는 고객 제공 키를 사용할 때 암호화된 데이터를 읽거나 쓰기 위한 각 요청과 함께 암호화 키를 전달합니다. 이러한 키를 관리하는 것은 고객의 책임이 있습니다. 고객은 각 오브젝트를 암호화하는 데 사용되는 Ceph Object Gateway를 기억할 수 있어야 합니다.

Ceph Object Gateway는 Amazon SSE-C 사양에 따라 S3 API에서 고객 제공 키 동작을 구현합니다.

고객이 키 관리를 처리하고 S3 클라이언트가 키를 Ceph Object Gateway에 전달하므로 Ceph Object Gateway는 이 암호화 모드를 지원하기 위해 특별한 구성이 필요하지 않습니다.

키 관리 서비스

키 관리 서비스를 사용하는 경우 보안 키 관리 서비스는 키를 저장하고 Ceph Object Gateway는 필요에 따라 데이터를 암호화하거나 암호 해독하는 요청을 처리하기 위해 해당 키를 검색합니다.

Ceph Object Gateway는 Amazon SSE-KMS 사양에 따라 S3 API에서 키 관리 서비스 동작을 구현합니다.

중요

현재 테스트된 유일한 키 관리 구현은 HashiCorp Vault 및 OpenStack Barbican입니다. 그러나 OpenStack Barbican은 기술 프리뷰이며 프로덕션 시스템에서 사용할 수 없습니다.

SSE-S3

SSE-S3을 사용하는 경우 키는 vault에 저장되지만 Ceph에서 자동으로 생성 및 삭제하고 데이터를 암호화하거나 암호 해독하기 위한 요청을 처리하는 데 필요한 대로 검색됩니다.

Ceph Object Gateway는 Amazon SSE-S3 사양에 따라 S3 API에서 SSE-S3 동작을 구현합니다.

8.1.1. 기존 S3 버킷의 기본 암호화 설정

스토리지 관리자는 기존 Amazon S3 버킷의 기본 암호화를 설정하여 모든 오브젝트가 버킷에 저장될 때 암호화되도록 할 수 있습니다. Bucket Encryption API를 사용하여 Amazon S3 관리 키(SSE-S3) 또는 Amazon KMS 고객 마스터 키(SSE-KMS)를 사용하여 서버 측 암호화를 지원할 수 있습니다.

참고

SSE-KMS는 Red Hat Ceph Storage 5.x가 아닌 Red Hat Ceph Storage 4.x에서만 지원됩니다.

PutBucketEncryption API를 사용하여 기존 Amazon S3 버킷의 기본 암호화를 관리할 수 있습니다. 이 버킷에 업로드된 모든 파일에는 버킷 수준에서 기본 암호화를 정의하여 이 암호화가 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • S3 버킷이 생성되었습니다.
  • 사용자 액세스 권한이 있는 S3 사용자
  • AWS CLI 패키지가 설치된 Ceph Object Gateway 클라이언트에 액세스할 수 있습니다.

프로세스

  1. 암호화 구성에 대한 JSON 파일을 생성합니다.

    예제

    [user@client ~]$ vi bucket-encryption.json
    Copy to Clipboard Toggle word wrap

  2. 암호화 구성 규칙을 파일에 추가합니다.

    예제

    {
    	"Rules": [
            {
    	    "ApplyServerSideEncryptionByDefault": {
                        "SSEAlgorithm": "AES256"
    	    }
           }
        ]
    }
    Copy to Clipboard Toggle word wrap

  3. 버킷의 기본 암호화를 설정합니다.

    구문

    aws --endpoint-url=pass:q[_RADOSGW_ENDPOINT_URL_]:pass:q[_PORT_] s3api put-bucket-encryption --bucket pass:q[_BUCKET_NAME_] --server-side-encryption-configuration pass:q[_file://PATH_TO_BUCKET_ENCRYPTION_CONFIGURATION_FILE/BUCKET_ENCRYPTION_CONFIGURATION_FILE.json_]
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$ aws --endpoint-url=http://host01:80 s3api put-bucket-encryption --bucket testbucket --server-side-encryption-configuration file://bucket-encryption.json
    Copy to Clipboard Toggle word wrap

검증

  • 버킷의 버킷 암호화 구성을 검색합니다.

    구문

    aws --endpoint-url=pass:q[_RADOSGW_ENDPOINT_URL_]:pass:q[_PORT_] s3api get-bucket-encryption --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$  aws --profile ceph --endpoint=http://host01:80 s3api get-bucket-encryption --bucket testbucket
    
    {
        "ServerSideEncryptionConfiguration": {
            "Rules": [
                {
                    "ApplyServerSideEncryptionByDefault": {
                        "SSEAlgorithm": "AES256"
                    }
                }
            ]
        }
    }
    Copy to Clipboard Toggle word wrap

참고

버킷에 기본 암호화 구성이 없는 경우 get-bucket-encryption 명령은 ServerSideEncryptionConfigurationNotFoundError 를 반환합니다.

8.1.2. 기본 버킷 암호화 삭제

s3api delete-bucket-encryption 명령을 사용하여 지정된 버킷의 기본 버킷 암호화를 삭제할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • S3 버킷이 생성되었습니다.
  • 사용자 액세스 권한이 있는 S3 사용자
  • AWS CLI 패키지가 설치된 Ceph Object Gateway 클라이언트에 액세스할 수 있습니다.

프로세스

  • 버킷 암호화 구성을 삭제합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api delete-bucket-encryption --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$ aws --endpoint-url=http://host01:80 s3api delete-bucket-encryption --bucket testbucket
    Copy to Clipboard Toggle word wrap

검증

  • 버킷의 버킷 암호화 구성을 검색합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api get-bucket-encryption --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$  aws --endpoint=http://host01:80 s3api get-bucket-encryption --bucket testbucket
    
    An error occurred (ServerSideEncryptionConfigurationNotFoundError) when calling the GetBucketEncryption operation:
    The server side encryption configuration was not found
    Copy to Clipboard Toggle word wrap

8.2. 서버 측 암호화 요청

프로덕션 환경에서 클라이언트는 프록시를 통해 Ceph Object Gateway에 연결하는 경우가 많습니다. 이 프록시를 여러 Ceph Object Gateway에 연결하므로 로드 밸런서라고 합니다. 클라이언트가 Ceph Object Gateway에 요청을 보내면 로드 밸런서는 해당 요청을 여러 Ceph Object Gateway에 라우팅하여 워크로드를 배포합니다.

이러한 유형의 구성에서는 로드 밸런서와 로드 밸런서와 여러 Ceph Object Gateway 간에 SSL 종료가 발생할 수 있습니다. 통신은 HTTP만 사용하여 수행됩니다. 서버 측 암호화 요청을 수락하도록 Ceph Object Gateway를 설정하려면 서버 측 암호화 구성을 참조하십시오.

8.3. 서버 측 암호화 구성

SSL을 통해 암호화된 요청을 보낼 수 없는 경우 HTTP를 사용하여 Ceph Object Gateway에 요청을 보내도록 서버 측 암호화를 설정할 수 있습니다.

이 절차에서는 HAProxy를 프록시 및 로드 밸런서로 사용합니다.

사전 요구 사항

  • 스토리지 클러스터의 모든 노드에 대한 루트 수준 액세스.
  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • HAProxy 소프트웨어 설치.

프로세스

  1. haproxy.cfg 파일을 편집합니다.

    예제

    frontend http_web *:80
        mode http
        default_backend rgw
    
    frontend rgw­-https
      bind *:443 ssl crt /etc/ssl/private/example.com.pem
      default_backend rgw
    
    backend rgw
        balance roundrobin
        mode http
        server  rgw1 10.0.0.71:8080 check
        server  rgw2 10.0.0.80:8080 check
    Copy to Clipboard Toggle word wrap

  2. http 프런트 엔드에 액세스할 수 있는 행을 주석 처리하고 대신 https 프런트 엔드를 사용하도록 HAProxy를 지시하는 지침을 추가합니다.

    예제

    #     frontend http_web *:80
    #     mode http
    #     default_backend rgw
    
    frontend rgw­-https
      bind *:443 ssl crt /etc/ssl/private/example.com.pem
      http-request set-header X-Forwarded-Proto https if { ssl_fc }
      http-request set-header X-Forwarded-Proto https
    # here we set the incoming HTTPS port on the load balancer (eg : 443)
      http-request set-header X-Forwarded-Port 443
      default_backend rgw
    
    backend rgw
        balance roundrobin
        mode http
        server  rgw1 10.0.0.71:8080 check
        server  rgw2 10.0.0.80:8080 check
    Copy to Clipboard Toggle word wrap

  3. rgw_trust_forwarded_https 옵션을 true 로 설정합니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_trust_forwarded_https true
    Copy to Clipboard Toggle word wrap

  4. HAProxy를 활성화하고 시작합니다.

    [root@host01 ~]# systemctl enable haproxy
    [root@host01 ~]# systemctl start haproxy
    Copy to Clipboard Toggle word wrap

8.4. HashiCorp Vault

스토리지 관리자는 Ceph Object Gateway와 함께 사용할 수 있도록 HashiCorp Vault에 키, 암호 및 인증서를 안전하게 저장할 수 있습니다. HashiCorp Vault는 Ceph Object Gateway에서 사용하는 서버 측 암호화를 위한 보안 키 관리 서비스를 제공합니다.

기본 워크플로:

  1. 클라이언트는 오브젝트의 키 ID를 기반으로 Vault에서 시크릿 키 생성을 요청합니다.
  2. 클라이언트는 오브젝트의 키 ID를 사용하여 오브젝트를 Ceph Object Gateway에 업로드합니다.
  3. 그런 다음 Ceph Object Gateway는 Vault에서 새로 생성된 시크릿 키를 요청합니다.
  4. Vault는 시크릿 키를 Ceph Object Gateway에 반환하여 요청에 응답합니다.
  5. 이제 Ceph Object Gateway에서 새 시크릿 키를 사용하여 오브젝트를 암호화할 수 있습니다.
  6. 암호화가 완료되면 오브젝트는 Ceph OSD에 저장됩니다.
중요

Red Hat은 이 문서를 고객에게 제공하기 위해 Red Hat 기술 파트너와 협력합니다. 그러나 Red Hat은 이 제품에 대한 지원을 제공하지 않습니다. 이 제품에 대한 기술 지원이 필요한 경우 Hashicorp에 문의하여 지원을 받으십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • HashiCorp Vault 소프트웨어 설치.

8.4.1. Vault용 시크릿 엔진

HashiCorp Vault는 데이터를 생성, 저장 또는 암호화하기 위한 여러 시크릿 엔진을 제공합니다. 애플리케이션 프로그래밍 인터페이스(API)는 해당 데이터에 대한 작업을 요청하는 시크릿 엔진에 데이터 호출을 전송하고, 시크릿 엔진은 해당 작업 요청의 결과를 반환합니다.

Ceph Object Gateway는 HashiCorp Vault 시크릿 엔진 중 두 개를 지원합니다.

  • 키/값 버전 2
  • 전송
중요

비밀 엔진은 언제든지 구성할 수 있지만 엔진은 동시에 지원되지 않습니다.

키/값 버전 2

키/값 시크릿 엔진은 디스크의 Vault에 임의의 시크릿을 저장합니다. kv 엔진 버전 2에서는 키에 구성 가능한 수의 버전이 있을 수 있습니다. 기본 버전 수는 10입니다. 버전을 삭제해도 기본 데이터는 삭제되지 않지만 데이터가 삭제된 것으로 표시되므로 삭제된 버전을 삭제할 수 있습니다. API 끝점 또는 destroy 명령을 사용하여 버전 데이터를 영구적으로 제거할 수 있습니다. 키의 모든 버전 및 메타데이터를 삭제하려면 metadata 명령 또는 API 끝점을 사용할 수 있습니다. 키 이름은 문자열이어야 하며, 엔진은 명령줄 인터페이스를 사용할 때 문자열이 아닌 값을 문자열로 변환합니다. 문자열이 아닌 값을 유지하려면 JSON 파일을 제공하거나 HTTP 애플리케이션 프로그래밍 인터페이스(API)를 사용합니다.

참고

ACL(액세스 제어 목록) 정책의 경우 키/값 시크릿 엔진은 생성업데이트 기능 간의 차이점을 인식합니다.

전송

Transit 시크릿 엔진은 전송 중 데이터에서 암호화 기능을 수행합니다. Transit 시크릿 엔진은 해시를 생성하고 임의의 바이트의 소스일 수 있으며 데이터에 서명하고 확인할 수도 있습니다. Vault는 Transit 시크릿 엔진을 사용할 때 데이터를 저장하지 않습니다. Transit 비밀 엔진은 동일한 키를 여러 용도로 사용하도록 허용하여 키 파생 기능을 지원합니다. 또한 전송 시크릿 엔진은 주요 버전 관리를 지원합니다. Transit 시크릿 엔진은 이러한 주요 유형을 지원합니다.

aes128-gcm96
128비트 AES 키와 96비트 nonce가 있는 AES-GCM은 암호화, 암호 해독, 키 파생 및 통합 암호화를 지원합니다.
aes256-gcm96
256비트 AES 키와 96비트 nonce가 있는 AES-GCM은 암호화, 암호 해독, 키 파생 및 통합 암호화(기본값)를 지원합니다.
chacha20-poly1305
256비트 키가 있는 CryostatCha20-Poly1305는 암호화, 암호 해독, 키 파생 및 통합 암호화를 지원합니다.
ed25519
Ed25519; 서명, 서명 확인 및 키 파생 지원
ecdsa-p256
P-256 곡선을 사용하는 ECDSA; 서명 및 서명 확인을 지원
ecdsa-p384
P-384 곡선을 사용하는 ECDSA; 서명 및 서명 확인을 지원
ecdsa-p521
P-521; 곡선을 사용하는 ECDSA; 서명 및 서명 확인을 지원
rsa-2048
2048비트 RSA 키; 암호화, 암호 해독, 서명 확인 지원
rsa-3072
3072비트 RSA 키; 암호화, 암호 해독, 서명 확인 지원
rsa-4096
4096비트 RSA 키; 암호화, 암호 해독, 서명 확인 지원

8.4.2. Vault를 위한 인증

H¢Corp Vault는 여러 유형의 인증 메커니즘을 지원합니다. Ceph Object Gateway는 현재 Vault 에이전트 방법을 지원합니다. Ceph Object Gateway는 rgw_crypt_vault_authrgw_crypt_vault_addr 옵션을 사용하여 HashiCorp Vault 사용을 구성합니다.

중요

Red Hat은 Vault 에이전트를 컨테이너의 인증 방법으로 지원하며 컨테이너에서 토큰 인증 사용은 지원되지 않습니다.

Vault 에이전트

Vault 에이전트는 클라이언트 노드에서 실행되고 토큰 갱신과 함께 클라이언트 측 캐싱을 제공하는 데몬입니다. Vault 에이전트는 일반적으로 Ceph Object Gateway 노드에서 실행됩니다. Vault 에이전트를 실행하고 토큰 파일을 새로 고칩니다. 이 모드에서 Vault 에이전트를 사용하는 경우 파일 시스템 권한을 사용하여 토큰 사용에 대한 액세스 권한을 제한할 수 있습니다. 또한 Vault 에이전트는 필요한 경우 Vault에서 토큰을 추가하고 실제 서버로 전달하기 전에 토큰을 추가할 수 있습니다. Vault 에이전트는 Filesystem에 토큰을 저장할 때와 마찬가지로 토큰 갱신을 계속 처리할 수 있습니다. Ceph Object Gateway가 Vault 에이전트와 연결하는 데 사용하는 네트워크를 보호하는 데 필요합니다(예: Vault 에이전트는 localhost만 수신 대기).

8.4.3. Vault용 네임 스페이스

H¢Corp Vault를 엔터프라이즈 서비스로 사용하면 조직 내에서 팀에서 사용할 수 있는 격리된 네임스페이스에 대한 중앙 집중식 관리가 제공됩니다. 이러한 격리된 네임스페이스 환경을 테넌트 라고 하며 조직 내 팀은 이러한 테넌트 를 사용하여 정책, 시크릿 및 ID를 다른 팀과 분리할 수 있습니다. Vault의 네임스페이스 기능은 단일 인프라 내에서 보안 멀티 테넌시를 지원하는 데 도움이 됩니다.

추가 리소스

8.4.4. 전송 엔진 호환성 지원

Transit 엔진을 단순한 키 저장소로 사용한 이전 버전의 Ceph에 대한 호환성 지원이 있습니다. Transit 엔진에서 compat 옵션을 사용하여 호환성 지원을 구성할 수 있습니다. 다음 명령을 사용하여 이전 지원을 비활성화할 수 있습니다.

예제

[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=0
Copy to Clipboard Toggle word wrap

참고

이는 향후 버전의 기본값이며 새 설치에 현재 버전을 사용할 수 있습니다.

현재 버전의 일반 기본값은 다음과 같습니다.

예제

[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=1
Copy to Clipboard Toggle word wrap

이를 통해 새로 생성된 개체에 대해 새 엔진을 사용할 수 있으며 이전 엔진을 이전 개체에 계속 사용할 수 있습니다. 오래된 개체와 새 개체에 액세스하려면 Vault 토큰에 이전 및 새 전송 정책이 모두 있어야 합니다.

다음 명령을 사용하여 이전 엔진만 강제로 사용할 수 있습니다.

예제

[ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit compat=2
Copy to Clipboard Toggle word wrap

Vault가 export/encryption-key 로 종료되면 이 모드는 기본적으로 선택됩니다.

중요

client.rgw 옵션을 구성한 후 새 값을 적용하려면 Ceph Object Gateway 데몬을 다시 시작해야 합니다.

8.4.5. Vault에 대한 토큰 정책 생성

토큰 정책은 모든 Vault 토큰에 있는 권한을 지정합니다. 하나의 토큰에 여러 정책이 있을 수 있습니다. 구성에 필요한 정책을 사용해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • HashiCorp Vault 소프트웨어 설치.
  • HashiCorp Vault 노드에 대한 루트 수준 액세스.

프로세스

  1. 토큰 정책을 생성합니다.

    1. 키/값 시크릿 엔진의 경우:

      예제

      [root@vault ~]# vault policy write rgw-kv-policy -<<EOF
       path "secret/data/*" {
         capabilities = ["read"]
       }
      EOF
      Copy to Clipboard Toggle word wrap

    2. Transit 엔진의 경우:

      예제

      [root@vault ~]# vault policy write rgw-transit-policy -<<EOF
        path "transit/keys/*" {
          capabilities = [ "create", "update" ]
          denied_parameters = {"exportable" = [], "allow_plaintext_backup" = [] }
        }
      
        path "transit/keys/*" {
          capabilities = ["read", "delete"]
        }
      
        path "transit/keys/" {
          capabilities = ["list"]
        }
      
        path "transit/keys/+/rotate" {
          capabilities = [ "update" ]
        }
      
        path "transit/*" {
          capabilities = [ "update" ]
        }
      EOF
      Copy to Clipboard Toggle word wrap

      참고

      이전 버전의 Ceph에서 Transit 시크릿 엔진을 사용한 경우 토큰 정책은 다음과 같습니다.

      예제

      [root@vault ~]# vault policy write old-rgw-transit-policy -<<EOF
        path "transit/export/encryption-key/*" {
          capabilities = ["read"]
        }
      EOF
      Copy to Clipboard Toggle word wrap

SSE-KMS 및 SSE-S3을 모두 사용하는 경우 각각 별도의 컨테이너를 가리켜야 합니다. 별도의 Vault 인스턴스를 사용하거나 일반적인 전송 지점 아래의 전송 인스턴스 또는 다른 분기를 별도로 마운트할 수 있습니다. 별도의 Vault 인스턴스를 사용하지 않는 경우 SSE-KMS 또는 SSE-S3을 가리키며 rgw_crypt_vault_prefixrgw_crypt_sse_s3_vault_prefix 를 사용하여 컨테이너를 분리할 수 있습니다. SSE-KMS 버킷 소유자에 Vault 권한을 부여할 때 SSE-S3 키에 대한 권한을 부여해서는 안 됩니다. Ceph만 SSE-S3 키에 액세스할 수 있어야 합니다.

8.4.6. Vault에서 SSE-KMS를 사용하도록 Ceph Object Gateway 구성

키 관리를 위해 SSE-KMS와 HashiCorp Vault를 사용하도록 Ceph Object Gateway를 구성하려면 암호화 키 저장소로 설정해야 합니다. 현재 Ceph Object Gateway는 두 가지 비밀 엔진과 두 가지 다른 인증 방법을 지원합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.

프로세스

  1. ceph config set client.rgw OPTION VALUE 명령을 사용하여 암호화 키 저장소로 Vault를 활성화합니다.

    구문

    ceph config set client.rgw rgw_crypt_s3_kms_backend vault
    Copy to Clipboard Toggle word wrap

  2. 다음 옵션과 값을 추가합니다.

    구문

    ceph config set client.rgw rgw_crypt_vault_auth agent
    ceph config set client.rgw rgw_crypt_vault_addr http://VAULT_SERVER:8100
    Copy to Clipboard Toggle word wrap

  3. 사용 사례에 따라 정책을 사용자 지정합니다.
  4. role-id를 가져옵니다.

    구문

    vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .data.role_id > PATH_TO_FILE
    Copy to Clipboard Toggle word wrap

  5. secret-id를 가져옵니다.

    구문

    vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .data.secret_id > PATH_TO_FILE
    Copy to Clipboard Toggle word wrap

  6. Vault 에이전트에 대한 구성을 생성합니다.

    예제

    pid_file = "/run/kv-vault-agent-pid"
    auto_auth {
      method "AppRole" {
        mount_path = "auth/approle"
        config = {
          role_id_file_path ="/root/vault_configs/kv-agent-role-id"
          secret_id_file_path ="/root/vault_configs/kv-agent-secret-id"
          remove_secret_id_file_after_reading ="false"
        }
      }
    }
    cache {
      use_auto_auth_token = true
    }
    listener "tcp" {
      address = "127.0.0.1:8100"
      tls_disable = true
    }
    vault {
      address = "http://10.8.128.9:8200"
    }
    Copy to Clipboard Toggle word wrap

  7. systemctl을 사용하여 영구 데몬을 실행합니다.

    예제

    [root@host03 ~]# /usr/local/bin/vault agent -config=/usr/local/etc/vault/rgw-agent.hcl
    Copy to Clipboard Toggle word wrap

  8. Vault 에이전트가 실행될 때 토큰 파일은 유효한 토큰으로 채워집니다.
  9. Key/Value 또는 Transit 중 하나인 Vault 시크릿 엔진을 선택합니다.

    1. Key/Value 를 사용하는 경우 다음 행을 추가합니다.

      예제

      [ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine kv
      Copy to Clipboard Toggle word wrap

    2. Transit 을 사용하는 경우 다음 행을 추가합니다.

      예제

      [ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_secret_engine transit
      Copy to Clipboard Toggle word wrap

  10. ceph config set client.rgw OPTION VALUE 명령을 사용하여 암호화 키를 검색하도록 Vault 네임스페이스를 설정합니다.

    예제

    [ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_namespace testnamespace1
    Copy to Clipboard Toggle word wrap

  11. 경로 접두사를 설정하여 Ceph Object Gateway에서 Vault에서 암호화 키를 검색하는 위치를 제한합니다.

    예제

    [ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_prefix /v1/secret/data
    Copy to Clipboard Toggle word wrap

    1. 내보낼 수 있는 전송 키의 경우 다음과 같이 접두사 경로를 설정합니다.

      예제

      [ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_vault_prefix /v1/transit/export/encryption-key
      Copy to Clipboard Toggle word wrap

      Vault 서버의 도메인 이름이 vault-server 라고 가정하면 Ceph Object Gateway는 다음 URL에서 암호화된 전송 키를 가져옵니다.

      예제

      http://vault-server:8200/v1/transit/export/encryption-key
      Copy to Clipboard Toggle word wrap

  12. Ceph Object Gateway 데몬을 다시 시작합니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host03 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host03 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

8.4.7. Vault에서 SSE-S3을 사용하도록 Ceph Object Gateway 구성

키 관리를 위해 SSE-S3에서 HashiCorp Vault를 사용하도록 Ceph Object Gateway를 구성하려면 암호화 키 저장소로 설정해야 합니다. 현재 Ceph Object Gateway는 에이전트 인증 방법만 사용합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.

프로세스

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 시크릿 엔진으로 Vault를 활성화하여 SSE-S3 암호화 키를 검색합니다.

    구문

    ceph config set client.rgw rgw_crypt_sse_s3_backend vault
    Copy to Clipboard Toggle word wrap

  3. SSE-S3 및 Vault와 함께 사용할 인증 방법을 설정하려면 다음 설정을 구성합니다.

    구문

    ceph config set client.rgw rgw_crypt_sse_s3_vault_auth agent
    ceph config set client.rgw rgw_crypt_sse_s3_vault_addr http://VAULT_AGENT:VAULT_AGENT_PORT
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 ~]# ceph config set client.rgw rgw_crypt_sse_s3_vault_auth agent
    [ceph: root@host01 ~]# ceph config set client.rgw rgw_crypt_sse_s3_vault_addr http://vaultagent:8100
    Copy to Clipboard Toggle word wrap

    1. 사용 사례에 따라 정책을 사용자 지정하여 Vault 에이전트를 설정합니다.
    2. role-id를 가져옵니다.

      구문

      vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .rgw-ap-role-id > PATH_TO_FILE
      Copy to Clipboard Toggle word wrap

    3. secret-id를 가져옵니다.

      구문

      vault read auth/approle/role/rgw-ap/role-id -format=json | \ jq -r .rgw-ap-secret-id > PATH_TO_FILE
      Copy to Clipboard Toggle word wrap

    4. Vault 에이전트에 대한 구성을 생성합니다.

      예제

      pid_file = "/run/rgw-vault-agent-pid"
      auto_auth {
        method "AppRole" {
          mount_path = "auth/approle"
          config = {
            role_id_file_path ="/usr/local/etc/vault/.rgw-ap-role-id"
            secret_id_file_path ="/usr/local/etc/vault/.rgw-ap-secret-id"
            remove_secret_id_file_after_reading ="false"
          }
        }
      }
      cache {
        use_auto_auth_token = true
      }
      listener "tcp" {
        address = "127.0.0.1:8100"
        tls_disable = true
      }
      vault {
        address = "https://vaultserver:8200"
      }
      Copy to Clipboard Toggle word wrap

    5. systemctl을 사용하여 영구 데몬을 실행합니다.

      예제

      [root@host01 ~]# /usr/local/bin/vault agent -config=/usr/local/etc/vault/rgw-agent.hcl
      Copy to Clipboard Toggle word wrap

    6. Vault 에이전트가 실행될 때 토큰 파일은 유효한 토큰으로 채워집니다.
  4. 키/값 또는 Transit 암호화 키를 검색하는 데 사용할 Vault 시크릿 엔진을 설정합니다.

    1. Key/Value 를 사용하는 경우 다음을 설정합니다.

      예제

      [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_secret_engine kv
      Copy to Clipboard Toggle word wrap

    2. Transit 을 사용하는 경우 다음을 설정합니다.

      예제

      [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_secret_engine transit
      Copy to Clipboard Toggle word wrap

  5. 선택 사항: 특정 네임스페이스 내의 Vault에 액세스하도록 Ceph Object Gateway를 구성하여 암호화 키를 검색합니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_namespace company/testnamespace1
    Copy to Clipboard Toggle word wrap

    참고

    Vault 네임스페이스를 사용하면 테넌트라는 격리된 환경 내에서 팀을 작동할 수 있습니다. Vault 네임스페이스 기능은 Vault Enterprise 버전에서만 사용할 수 있습니다.

  6. 선택 사항: Ceph Object Gateway에서 암호화 키를 검색하는 URL 경로 접두사를 설정하여 Vault 시크릿 공간의 특정 하위 집합에 대한 액세스를 제한합니다.

    1. Key/Value 를 사용하는 경우 다음을 설정합니다.

      예제

      [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_prefix /v1/secret/data
      Copy to Clipboard Toggle word wrap

    2. Transit 을 사용하는 경우 다음을 설정합니다.

      예제

      [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_prefix /v1/transit
      Copy to Clipboard Toggle word wrap

      Vault 서버의 도메인 이름이 vaultserver 라고 가정하면 Ceph Object Gateway는 다음 URL에서 암호화된 전송 키를 가져옵니다.

      예제

      http://vaultserver:8200/v1/transit
      Copy to Clipboard Toggle word wrap

  7. 선택 사항: 사용자 정의 SSL 인증을 사용하여 Vault로 인증하려면 다음 설정을 구성합니다.

    구문

    ceph config set client.rgw rgw_crypt_sse_s3_vault_verify_ssl true
    ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_cacert PATH_TO_CA_CERTIFICATE
    ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientcert PATH_TO_CLIENT_CERTIFICATE
    ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientkey PATH_TO_PRIVATE_KEY
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_verify_ssl true
    [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_cacert /etc/ceph/vault.ca
    [ceph: root@host01 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientcert /etc/ceph/vault.crt
    [ceph: root@host03 /]# ceph config set client.rgw rgw_crypt_sse_s3_vault_ssl_clientkey /etc/ceph/vault.key
    Copy to Clipboard Toggle word wrap

  8. Ceph Object Gateway 데몬을 다시 시작합니다.

    1. 스토리지 클러스터의 개별 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      systemctl restart ceph-CLUSTER_ID@SERVICE_TYPE.ID.service
      Copy to Clipboard Toggle word wrap

      예제

      [root@host01 ~]# systemctl restart ceph-c4b34c6f-8365-11ba-dc31-529020a7702d@rgw.realm.zone.host01.gwasto.service
      Copy to Clipboard Toggle word wrap

    2. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하려면 다음을 수행합니다.

      구문

      ceph orch restart SERVICE_TYPE
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# ceph orch restart rgw
      Copy to Clipboard Toggle word wrap

8.4.8. kv 엔진을 사용하여 키 생성

Ceph Object Gateway에서 사용할 키를 생성할 수 있도록 HashiCorp Vault 키/값 시크릿 엔진(kv)을 구성합니다. 시크릿은 kv 시크릿 엔진에 키-값 쌍으로 저장됩니다.

중요

서버 측 암호화 키는 256비트이고 base64 를 사용하여 인코딩되어야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • HashiCorp Vault 소프트웨어 설치.
  • HashiCorp Vault 노드에 대한 루트 수준 액세스.

프로세스

  1. 키/값 버전 2 시크릿 엔진을 활성화합니다.

    예제

    vault secrets enable -path secret kv-v2
    Copy to Clipboard Toggle word wrap

  2. 새 키를 생성합니다.

    구문

    vault kv put secret/PROJECT_NAME/BUCKET_NAME key=$(openssl rand -base64 32)
    Copy to Clipboard Toggle word wrap

    예제

    [root@vault ~]# vault kv put secret/myproject/mybucketkey key=$(openssl rand -base64 32)
    
    ====== Metadata ======
    Key              Value
    ---              -----
    created_time     2020-02-21T17:01:09.095824999Z
    deletion_time    n/a
    destroyed        false
    version          1
    Copy to Clipboard Toggle word wrap

8.4.9. 전송 엔진을 사용하여 키 생성

Ceph Object Gateway와 함께 사용할 키를 생성할 수 있도록 HashiCorp Vault Transit 시크릿 엔진(Transport )을 구성합니다. Ceph Object Gateway를 사용한 서버 측 암호화에 사용하려면 Transit 시크릿 엔진을 사용하여 키를 생성할 수 있어야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • HashiCorp Vault 소프트웨어 설치.
  • HashiCorp Vault 노드에 대한 루트 수준 액세스.

프로세스

  1. Transit 시크릿 엔진을 활성화합니다.

    [root@vault ~]# vault secrets enable transit
    Copy to Clipboard Toggle word wrap
  2. 내보내기 가능한 새 키를 생성합니다.

    구문

    vault write -f transit/keys/BUCKET_NAME exportable=true
    Copy to Clipboard Toggle word wrap

    예제

    [root@vault ~]# vault write -f transit/keys/mybucketkey exportable=true
    Copy to Clipboard Toggle word wrap

    참고

    기본적으로 위의 명령은 aes256-gcm96 유형 키를 생성합니다.

    1. 키 교체를 활성화합니다.

      구문

      vault write -f transit/keys/BUCKET_NAME/rotate exportable=true
      Copy to Clipboard Toggle word wrap

      예제

      [root@vault ~]# vault write -f transit/keys/mybucketkey/rotate exportable=true
      Copy to Clipboard Toggle word wrap

    2. 키 교체 기간을 지정합니다.

      구문

      vault write -f transit/keys/BUCKET_NAME/config auto_rotate_period=DURATION
      Copy to Clipboard Toggle word wrap

      예제

      [root@vault ~]# vault write -f transit/keys/mybucketkey/config auto_rotate_period=30d
      Copy to Clipboard Toggle word wrap

      이 예에서 30d 는 30일 후에 키가 순환되도록 지정합니다. 키 교체 기간을 시간 단위로 지정하려면 auto_rotate_period=1h 를 사용합니다. 1 H는 키가 1시간 마다 회전하도록 지정합니다.

    3. latest_version 값이 증가했는지 확인하여 키 순환이 성공했는지 확인합니다.

      구문

      vault read transit/export/encryption-key/BUCKET_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [root@vault ~]# vault read transit/export/encryption-key/mybucketkey
      Copy to Clipboard Toggle word wrap

  3. 키 생성을 확인합니다.

    구문

    vault read transit/export/encryption-key/BUCKET_NAME/VERSION_NUMBER
    Copy to Clipboard Toggle word wrap

    예제

    [root@vault ~]# vault read transit/export/encryption-key/mybucketkey/1
    
    Key     Value
    ---     -----
    keys    map[1:-gbTI9lNpqv/V/2lDcmH2Nq1xKn6FPDWarCmFM2aNsQ=]
    name    mybucketkey
    type    aes256-gcm96
    Copy to Clipboard Toggle word wrap

    참고

    키 버전을 포함한 전체 키 경로를 제공해야 합니다.

8.4.10. AWS 및 Vault를 사용하여 오브젝트 업로드

Ceph Object Gateway에 오브젝트를 업로드할 때 Ceph Object Gateway는 Vault에서 키를 가져온 다음 오브젝트를 암호화하여 버킷에 저장합니다. 오브젝트 다운로드를 요청하면 Ceph Object Gateway에서 Vault에서 해당 키를 자동으로 검색하고 개체의 암호를 해독합니다. 오브젝트를 업로드하기 위해 Ceph 개체 게이트웨이는 Vault에서 키를 가져온 다음 오브젝트를 암호화하여 버킷에 저장합니다. Ceph Object Gateway는 Vault에서 해당 키를 검색하고 오브젝트 다운로드 요청 시 오브젝트를 암호 해독합니다.

참고

URL은 rgw_crypt_vault_addr 옵션으로 설정된 기본 주소와 rgw_crypt_ vault_prefix 옵션으로 설정된 경로 접두사 를 사용하여 구성됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • HashiCorp Vault 소프트웨어 설치.
  • Ceph Object Gateway 클라이언트 노드에 액세스합니다.
  • AWS(Amazon Web Services)에 액세스합니다.

프로세스

  1. AWS 명령줄 클라이언트를 사용하여 오브젝트를 업로드하고 요청에 SSE(Secure Side Encryption) 키 ID를 제공합니다.

    1. 키/값 시크릿 엔진의 경우:

      예(SSE-KMS 사용)

      [user@client ~]$ aws --endpoint=http://radosgw:8000 s3 cp plaintext.txt s3://mybucket/encrypted.txt --sse=aws:kms --sse-kms-key-id myproject/mybucketkey
      Copy to Clipboard Toggle word wrap

      예(SSE-S3)

      [user@client ~]$ aws s3api --endpoint http://rgw_host:8080 put-object --bucket my-bucket --key obj1 --body test_file_to_upload --server-side-encryption AES256
      Copy to Clipboard Toggle word wrap

      참고

      이 예제에서 Ceph Object Gateway는 http://vault-server:8200/v1/secret/data/myproject/mybucketkey에서 시크릿을 가져옵니다.

    2. Transit 엔진의 경우:

      예(SSE-KMS 사용)

      [user@client ~]$ aws --endpoint=http://radosgw:8000 s3 cp plaintext.txt s3://mybucket/encrypted.txt --sse=aws:kms --sse-kms-key-id mybucketkey
      Copy to Clipboard Toggle word wrap

      예(SSE-S3)

      [user@client ~]$ aws s3api --endpoint http://rgw_host:8080 put-object --bucket my-bucket --key obj1 --body test_file_to_upload --server-side-encryption AES256
      Copy to Clipboard Toggle word wrap

      참고

      이 예제에서 Ceph Object Gateway는 http://vaultserver:8200/v1/transit/mybucketkey에서 시크릿을 가져옵니다.

8.5. Ceph Object Gateway 및 다단계 인증

스토리지 관리자는 Ceph Object Gateway 사용자의 시간 기반 TOTP(한 번 암호) 토큰을 관리할 수 있습니다.

8.5.1. 다단계 인증

버킷이 오브젝트 버전 지정에 대해 구성되면 개발자가 삭제 요청에 대해 MFA(다중 인증)를 요구하도록 버킷을 선택적으로 구성할 수 있습니다. MFA를 사용하면 시간 기반 TOTP(한 번 암호) 토큰이 x-amz-mfa 헤더에 키로 전달됩니다. 토큰은 Google Authenticator와 같은 가상 MFA 장치 또는 Gemalto에서 제공하는 것과 같은 하드웨어 MFA 장치로 생성됩니다.

radosgw-admin 을 사용하여 시간 기반 암호 토큰을 사용자에게 할당합니다. 시크릿 시드와 직렬 ID를 설정해야 합니다. radosgw-admin 을 사용하여 토큰을 나열, 제거 및 재동기화할 수도 있습니다.

중요

MFA ID는 사용자 메타데이터에 설정되어 있지만 실제 MFA 암호 구성은 로컬 영역의 OSD에 있으므로 다중 사이트 환경에서는 다른 영역에 다른 토큰을 사용하는 것이 좋습니다.

Expand
표 8.1. 용어
용어설명

TOTP

시간 기반 일회성 암호.

토큰 직렬

TOTP 토큰의 ID를 나타내는 문자열입니다.

토큰 시드

TOTP를 계산하는 데 사용되는 시크릿 시드입니다. 16진수 또는 base32일 수 있습니다.

TOTP 초

TOTP 생성에 사용되는 시간 해상도입니다.

TOTP 창

토큰을 검증할 때 현재 토큰 전후에 확인되는 TOTP 토큰 수입니다.

TOTP 핀

특정 시간에 TOTP 토큰의 유효한 값입니다.

8.5.2. 다단계 인증을 위한 시드 생성

MFA(다중 인증)를 설정하려면 일회성 암호 생성기 및 백엔드 MFA 시스템에서 사용할 시크릿 시드를 생성해야 합니다.

사전 요구 사항

  • Linux 시스템.
  • 명령줄 쉘에 액세스합니다.

프로세스

  1. urandom Linux 장치 파일에서 30자 시드를 생성하여 쉘 변수 SEED 에 저장합니다.

    예제

    [user@host01 ~]$ SEED=$(head -10 /dev/urandom | sha512sum | cut -b 1-30)
    Copy to Clipboard Toggle word wrap

  2. SEED 변수에서 echo를 실행하여 시드를 출력합니다.

    예제

    [user@host01 ~]$ echo $SEED
    492dedb20cf51d1405ef6a1316017e
    Copy to Clipboard Toggle word wrap

    동일한 시드를 사용하도록 일회성 암호 생성기 및 백엔드 MFA 시스템을 구성합니다.

8.5.3. 새 다단계 인증 TOTP 토큰 생성

새 MFA(다중 인증) 시간 기반 TOTP(한 번 암호) 토큰을 만듭니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • Ceph 모니터 노드에서 root 액세스 권한이 있습니다.
  • 일회성 암호 생성기 및 Ceph Object Gateway MFA의 시크릿 시드가 생성되었습니다.

프로세스

  • 새 MFA TOTP 토큰을 생성합니다.

    구문

    radosgw-admin mfa create --uid=USERID --totp-serial=SERIAL --totp-seed=SEED --totp-seed-type=SEED_TYPE --totp-seconds=TOTP_SECONDS --totp-window=TOTP_WINDOW
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름으로 설정하여 MFA를 TOTP 토큰의 ID를 나타내는 문자열로 설정하고 SEED 를 TOTP를 계산하는 데 사용되는 16진수 또는 base32 값으로 설정합니다. 다음 설정은 선택 사항입니다. SEED_TYPE16진수 또는 base32 로 설정하고 TOTP_SECONDS 를 시간 초과로 설정하거나 TOTP_ CryostatDOW 를 TOTP 토큰 수로 설정하여 토큰을 검증할 때 현재 토큰을 확인할 수 있습니다.

    예제

    [root@host01 ~]# radosgw-admin mfa create --uid=johndoe --totp-serial=MFAtest --totp-seed=492dedb20cf51d1405ef6a1316017e
    Copy to Clipboard Toggle word wrap

8.5.4. 다단계 인증 TOTP 토큰 테스트

MFA(다중 인증) 시간 기반 TOTP(한 번 암호) 토큰을 테스트합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • Ceph 모니터 노드에서 root 액세스 권한이 있습니다.
  • MFA TOTP 토큰은 radosgw-admin mfa create 를 사용하여 생성되었습니다.

프로세스

  • TOTP 토큰 PIN을 테스트하여 TOTP가 올바르게 작동하는지 확인합니다.

    구문

    radosgw-admin mfa check --uid=USERID --totp-serial=SERIAL --totp-pin=PIN
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름 MFA로 설정하고, SERIAL 을 TOTP 토큰의 ID를 나타내는 문자열로 설정하고, 일회성 암호 생성기의 최신 PIN 으로 PIN을 설정합니다.

    예제

    [root@host01 ~]# radosgw-admin mfa check  --uid=johndoe --totp-serial=MFAtest --totp-pin=870305
    ok
    Copy to Clipboard Toggle word wrap

    PIN을 처음 테스트한 경우 실패할 수 있습니다. 실패하는 경우 토큰을 다시 동기화합니다. Red Hat Ceph Storage Object Gateway 구성 및 관리 가이드에서 다단계 인증 토큰 다시 동기화 를 참조하십시오.

8.5.5. 다단계 인증 TOTP 토큰 재동기화

MFA(다중 인증) 시간 기반 암호 토큰을 다시 동기화합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • Ceph 모니터 노드에서 root 액세스 권한이 있습니다.
  • MFA TOTP 토큰은 radosgw-admin mfa create 를 사용하여 생성되었습니다.

프로세스

  1. 시간 차이 또는 실패한 검사의 경우 다단계 인증 TOTP 토큰을 다시 동기화합니다.

    이를 위해서는 두 개의 연속 핀, 즉 이전 핀과 현재 핀을 전달해야합니다.

    구문

    radosgw-admin mfa resync --uid=USERID --totp-serial=SERIAL --totp-pin=PREVIOUS_PIN --totp=pin=CURRENT_PIN
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름 MFA로 설정하고, TOTP 토큰의 ID를 나타내는 문자열로 SERIAL 을 설정하고, PREVIOUS_PIN 을 사용자의 이전 PIN으로 설정하고, CURRENT_PIN 을 사용자의 현재 PIN으로 설정합니다.

    예제

    [root@host01 ~]# radosgw-admin mfa resync --uid=johndoe --totp-serial=MFAtest --totp-pin=802021 --totp-pin=439996
    Copy to Clipboard Toggle word wrap

  2. 새 PIN을 테스트하여 토큰이 다시 동기화되었는지 확인합니다.

    구문

    radosgw-admin mfa check --uid=USERID --totp-serial=SERIAL --totp-pin=PIN
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름 MFA로 설정하고, SERIAL 을 TOTP 토큰의 ID를 나타내는 문자열로 설정하고, PIN 을 사용자의 PIN으로 설정합니다.

    예제

    [root@host01 ~]# radosgw-admin mfa check  --uid=johndoe --totp-serial=MFAtest --totp-pin=870305
    ok
    Copy to Clipboard Toggle word wrap

8.5.6. 다단계 인증 TOTP 토큰 나열

특정 사용자가 보유한 모든 MFA(다중 인증) 시간 기반 TOTP(한 번 암호) 토큰을 나열합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • Ceph 모니터 노드에서 root 액세스 권한이 있습니다.
  • MFA TOTP 토큰은 radosgw-admin mfa create 를 사용하여 생성되었습니다.

프로세스

  • MFA TOTP 토큰 나열:

    구문

    radosgw-admin mfa list --uid=USERID
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름 MFA가 설정되도록 설정합니다.

    예제

    [root@host01 ~]# radosgw-admin mfa list --uid=johndoe
    {
        "entries": [
            {
                "type": 2,
                "id": "MFAtest",
                "seed": "492dedb20cf51d1405ef6a1316017e",
                "seed_type": "hex",
                "time_ofs": 0,
                "step_size": 30,
                "window": 2
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

8.5.7. 다단계 인증 TOTP 토큰 표시

serial을 지정하여 특정 MFA(다중 인증) 시간 기반 TOTP(한 번 암호) 토큰을 표시합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • Ceph 모니터 노드에서 root 액세스 권한이 있습니다.
  • MFA TOTP 토큰은 radosgw-admin mfa create 를 사용하여 생성되었습니다.

프로세스

  • MFA TOTP 토큰을 표시합니다.

    구문

    radosgw-admin mfa get --uid=USERID --totp-serial=SERIAL
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름 MFA로 설정하고 TOTP 토큰의 ID를 나타내는 문자열로 SERIAL 을 설정합니다.

8.5.8. 다단계 인증 TOTP 토큰 삭제

MFA(다중 인증) 시간 기반 TOTP(한 번 암호) 토큰을 삭제합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • Ceph 모니터 노드에서 root 액세스 권한이 있습니다.
  • MFA TOTP 토큰은 radosgw-admin mfa create 를 사용하여 생성되었습니다.

프로세스

  1. MFA TOTP 토큰 삭제:

    구문

    radosgw-admin mfa remove --uid=USERID --totp-serial=SERIAL
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름 MFA로 설정하고 TOTP 토큰의 ID를 나타내는 문자열로 SERIAL 을 설정합니다.

    예제

    [root@host01 ~]# radosgw-admin mfa remove --uid=johndoe --totp-serial=MFAtest
    Copy to Clipboard Toggle word wrap

  2. MFA TOTP 토큰이 삭제되었는지 확인합니다.

    구문

    radosgw-admin mfa get --uid=USERID --totp-serial=SERIAL
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름 MFA로 설정하고 TOTP 토큰의 ID를 나타내는 문자열로 SERIAL 을 설정합니다.

    예제

    [root@host01 ~]# radosgw-admin mfa get --uid=johndoe --totp-serial=MFAtest
    MFA serial id not found
    Copy to Clipboard Toggle word wrap

8.5.9. MFA 지원 버전이 지정된 오브젝트 삭제

MFA 지원 버전이 지정된 오브젝트를 삭제합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • Ceph Monitor 노드에서 root 액세스 권한이 있습니다.
  • MFA TOTP 토큰은 radosgw-admin mfa create 를 사용하여 생성되었습니다.
  • 버전 관리가 활성화된 버킷을 삭제하려면 root 사용자가 MFA-Object로 인증되어야 합니다.
  • 삭제하려는 MFA-Object는 버전 관리가 활성화된 버킷에 있습니다.

프로세스

  1. MFA 지원 버전이 지정된 오브젝트를 삭제합니다.

    구문

    radosgw-admin object rm --bucket <bucket_name> --object <object_name> --object-version <object_version> --totp-pin <totp_token>
    Copy to Clipboard Toggle word wrap

    USERID 를 사용자 이름 MFA로 설정하고 TOTP 토큰의 ID를 나타내는 문자열로 SERIAL 을 설정합니다.

    예제

    [radosgw-admin object rm --bucket test-mfa --object obj1 --object-version 4SdKdSmpVAarLLdsFukjUVEwr-2oWfC --totp-pin 562813
    Copy to Clipboard Toggle word wrap

  2. MFA 지원 버전이 지정된 오브젝트가 삭제되었는지 확인합니다.

    구문

    radosgw-admin bucket list --bucket <bucket_name>
    Copy to Clipboard Toggle word wrap

9장. 관리

스토리지 관리자는 radosgw-admin CLI(명령줄 인터페이스)를 사용하거나 Red Hat Ceph Storage 대시보드를 사용하여 Ceph Object Gateway를 관리할 수 있습니다.

참고

Red Hat Ceph Storage 대시보드에서 Ceph Object Gateway 기능을 일부 사용할 수 있는 것은 아닙니다.

사전 요구 사항

  • 정상 실행 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.

9.1. 스토리지 정책 생성

Ceph 개체 게이트웨이는 배치 대상을 식별하고 배치 대상과 연결된 풀에 버킷과 오브젝트를 저장하여 클라이언트 버킷 및 개체 데이터를 저장합니다. 배치 대상을 구성하지 않고 인스턴스의 영역 구성의 풀에 매핑하지 않으면 Ceph Object Gateway는 기본 대상 및 풀(예: default_placement )을 사용합니다.

스토리지 정책을 통해 Ceph Object Gateway 클라이언트에 스토리지 전략(예: 지속성, 복제 및 삭제 코딩)을 보장하는 방법으로 SSD, SAS 드라이브 및 SATA 드라이브와 같은 특정 유형의 스토리지를 대상으로 하는 기능을 제공합니다. 자세한 내용은 Red Hat Ceph Storage 7의 스토리지 전략 가이드를 참조하십시오.

스토리지 정책을 생성하려면 다음 절차를 따르십시오.

  1. 원하는 스토리지 전략을 사용하여 새 풀 .rgw.buckets.special 을 만듭니다. 예를 들어, erasure-coding, 특정 CRUSH 규칙 세트, 복제본 수, pg_numpgp_num 수로 사용자 지정된 풀입니다.
  2. 영역 그룹 구성을 가져와서 파일에 저장합니다.

    구문

    radosgw-admin zonegroup --rgw-zonegroup=ZONE_GROUP_NAME get > FILE_NAME.json
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin zonegroup --rgw-zonegroup=default get > zonegroup.json
    Copy to Clipboard Toggle word wrap

  3. zonegroup.json 파일의 placement_target 아래에 특수 배치 항목을 추가합니다.

    예제

    {
    	"name": "default",
    	"api_name": "",
    	"is_master": "true",
    	"endpoints": [],
    	"hostnames": [],
    	"master_zone": "",
    	"zones": [{
    		"name": "default",
    		"endpoints": [],
    		"log_meta": "false",
    		"log_data": "false",
    		"bucket_index_max_shards": 5
    	}],
    	"placement_targets": [{
    		"name": "default-placement",
    		"tags": []
    	}, {
    		"name": "special-placement",
    		"tags": []
    	}],
    	"default_placement": "default-placement"
    }
    Copy to Clipboard Toggle word wrap

  4. 수정된 zonegroup.json 파일로 영역 그룹을 설정합니다.

    예제

    [root@host01 ~]# radosgw-admin zonegroup set < zonegroup.json
    Copy to Clipboard Toggle word wrap

  5. 영역 구성을 가져와서 파일에 저장합니다(예: zone.json:):

    예제

    [root@host01 ~]# radosgw-admin zone get > zone.json
    Copy to Clipboard Toggle word wrap

  6. 영역 파일을 편집하고 placement_pool 아래에 새 배치 정책 키를 추가합니다.

    예제

    {
    	"domain_root": ".rgw",
    	"control_pool": ".rgw.control",
    	"gc_pool": ".rgw.gc",
    	"log_pool": ".log",
    	"intent_log_pool": ".intent-log",
    	"usage_log_pool": ".usage",
    	"user_keys_pool": ".users",
    	"user_email_pool": ".users.email",
    	"user_swift_pool": ".users.swift",
    	"user_uid_pool": ".users.uid",
    	"system_key": {
    		"access_key": "",
    		"secret_key": ""
    	},
    	"placement_pools": [{
    		"key": "default-placement",
    		"val": {
    			"index_pool": ".rgw.buckets.index",
    			"data_pool": ".rgw.buckets",
    			"data_extra_pool": ".rgw.buckets.extra"
    		}
    	}, {
    		"key": "special-placement",
    		"val": {
    			"index_pool": ".rgw.buckets.index",
    			"data_pool": ".rgw.buckets.special",
    			"data_extra_pool": ".rgw.buckets.extra"
    		}
    	}]
    }
    Copy to Clipboard Toggle word wrap

  7. 새 영역 구성을 설정합니다.

    예제

    [root@host01 ~]# radosgw-admin zone set < zone.json
    Copy to Clipboard Toggle word wrap

  8. 영역 그룹 맵을 업데이트합니다.

    예제

    [root@host01 ~]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

    특수 위치 항목은 placement _target 으로 나열됩니다.

  9. 요청 시 스토리지 정책을 지정하려면 다음을 수행합니다.

    예제

    $ curl -i http://10.0.0.1/swift/v1/TestContainer/file.txt -X PUT -H "X-Storage-Policy: special-placement" -H "X-Auth-Token: AUTH_rgwtxxxxxx"
    Copy to Clipboard Toggle word wrap

9.2. 인덱스 없는 버킷 생성

생성된 버킷이 버킷 인덱스를 사용하여 개체 인덱스(즉, 인덱스 없는 버킷)를 저장하지 않는 배치 대상을 구성할 수 있습니다. 데이터 복제 또는 목록을 사용하지 않는 배치 대상은 인덱스 없는 버킷을 구현할 수 있습니다. 인덱스 없는 버킷은 배치 대상이 특정 버킷의 오브젝트를 추적하지 않는 메커니즘을 제공합니다. 이렇게 하면 오브젝트 쓰기가 발생할 때마다 발생하는 리소스 경합이 제거되고 Ceph Object Gateway에서 Ceph 스토리지 클러스터에 수행해야 하는 왕복 횟수가 줄어듭니다. 이는 동시 작업 및 소규모 오브젝트 쓰기 성능에 긍정적인 영향을 미칠 수 있습니다.

중요

버킷 인덱스는 버킷의 올바른 상태를 반영하지 않으며 이러한 버킷을 나열해도 오브젝트 목록이 올바르게 반환되지 않습니다. 이는 여러 기능에 영향을 미칩니다. 특히 버킷 인덱스가 변경 정보를 저장하는 데 사용되지 않으므로 이러한 버킷은 다중 영역 환경에서 동기화되지 않습니다. 이 기능에 버킷 인덱스가 필요하므로 인덱스 없는 버킷에는 S3 오브젝트 버전 관리를 사용하지 않는 것이 좋습니다.

참고

인덱스리스 버킷을 사용하면 단일 버킷에 있는 최대 오브젝트 수 제한이 제거됩니다.

참고

인덱스 없는 버킷의 개체는 NFS에서 나열할 수 없습니다.

사전 요구 사항

  • 실행 중이고 정상적인 Red Hat Ceph Storage 클러스터입니다.
  • Ceph Object Gateway 소프트웨어 설치.
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.

프로세스

  1. zonegroup에 새 배치 대상을 추가합니다.

    예제

    [ceph: root@host03 /]# radosgw-admin zonegroup placement add --rgw-zonegroup="default" \
      --placement-id="indexless-placement"
    Copy to Clipboard Toggle word wrap

  2. 영역에 새 배치 대상을 추가합니다.

    예제

    [ceph: root@host03 /]# radosgw-admin zone placement add --rgw-zone="default" \
       --placement-id="indexless-placement" \
       --data-pool="default.rgw.buckets.data" \
       --index-pool="default.rgw.buckets.index" \
       --data_extra_pool="default.rgw.buckets.non-ec" \
       --placement-index-type="indexless"
    Copy to Clipboard Toggle word wrap

  3. zonegroup의 기본 배치를 indexless-placement 로 설정합니다.

    예제

    [ceph: root@host03 /]# radosgw-admin zonegroup placement default --placement-id "indexless-placement"
    Copy to Clipboard Toggle word wrap

    이 예에서 indexless-placement 대상에 생성된 버킷은 인덱스 없는 버킷이 됩니다.

  4. 클러스터가 다중 사이트 구성에 있는 경우 기간을 업데이트하고 커밋합니다.

    예제

    [ceph: root@host03 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  5. 스토리지 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하여 변경 사항을 적용합니다.

    구문

    ceph orch restart SERVICE_TYPE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host03 /]# ceph orch restart rgw
    Copy to Clipboard Toggle word wrap

9.3. 버킷 인덱스 재하드 구성

스토리지 관리자는 단일 사이트 및 다중 사이트 배포에서 버킷 인덱스 재하드를 구성하여 성능을 향상시킬 수 있습니다.

버킷 인덱스를 수동으로 오프라인 또는 온라인으로 재하드할 수 있습니다.

9.3.1. 버킷 인덱스 재하드

Ceph Object Gateway는 인덱스 풀에 버킷 인덱스 데이터를 저장합니다. 기본값은 .rgw.buckets.index 매개변수입니다. 클라이언트가 버킷당 최대 오브젝트 수에 대한 할당량을 설정하지 않고 단일 버킷에 많은 오브젝트를 배치하면 인덱스 풀에서 성능이 저하될 수 있습니다.

  • 버킷별로 많은 수의 오브젝트를 추가할 때 버킷 인덱스 재하드를 통해 성능 병목 현상을 방지할 수 있습니다.
  • 새 버킷에 대한 버킷 인덱스 재하드를 구성하거나 기존 버킷에서 버킷 인덱스를 변경할 수 있습니다.
  • shard 수가 계산된 shard 수에 가장 가까운 소수로 있어야 합니다. 소수인 버킷 인덱스 shard는 shard 전체에서 균등하게 분산된 버킷 인덱스 항목에서 더 잘 작동하는 경향이 있습니다.
  • 버킷 인덱스를 수동으로 또는 동적으로 재하드할 수 있습니다.

    버킷 인덱스를 동적으로 재하드하는 프로세스 중에 모든 Ceph Object Gateway 버킷을 주기적으로 확인하고 재하드해야 하는 버킷을 감지합니다. 버킷이 rgw_max_objs_per_shard 매개변수에 지정된 값보다 크면 Ceph Object Gateway가 백그라운드에서 버킷을 동적으로 재하드합니다. rgw_max_objs_per_shard 의 기본값은 shard당 100k 오브젝트입니다. 버킷 인덱스 복구는 영역 또는 영역 그룹을 수정하지 않고 업그레이드된 단일 사이트 구성에서 예상대로 동적으로 작동합니다. 단일 사이트 구성은 다음 중 하나일 수 있습니다.

    • 영역이 없는 기본 영역 구성입니다.
    • 하나 이상의 영역이 있는 기본이 아닌 구성입니다.
    • 다중 영역 단일 사이트 구성.
참고

버전 지정된 버킷은 특히 개체의 작은 하위 집합을 작성하고 다시 작성하는 경우 불균형된 인덱스를 나타낼 수 있습니다. 이 문제로 인해 많은 수의 오브젝트 업로드가 발생할 때 버전이 지정된 버킷에 있는 큰 omap이 발생할 수 있습니다.

9.3.2. 버킷 인덱스 복구

bucket_index_max_shards = 0 을 사용하여 생성된 버킷을 다시 고정하면 버킷의 메타데이터가 제거됩니다. 그러나 영향을 받는 버킷을 복구하여 버킷 인덱스를 복원할 수 있습니다.

/usr/bin/rgw-restore-bucket-index 툴은 /tmp 디렉토리에 임시 파일을 생성합니다. 이러한 임시 파일은 이전 버킷의 버킷 오브젝트 수에 따라 공간을 사용합니다. 10M 이상의 개체가 있는 이전 버킷에는 /tmp 디렉토리에 4GB 이상의 여유 공간이 필요합니다. /tmp 의 스토리지 공간이 소진되면 툴은 다음 메시지와 함께 실패합니다.

ln: failed to access '/tmp/rgwrbi-object-list.4053207': No such file or directory
Copy to Clipboard Toggle word wrap

임시 오브젝트가 제거됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 최소 두 개의 사이트에 설치되어 있습니다.
  • jq 패키지가 설치되어 있어야 합니다.

프로세스

  • 다음 두 단계 중 하나를 수행하여 버킷 인덱스 복구를 수행합니다.

    • radosgw-admin 오브젝트 reindex --bucket BUCKET_NAME --object OBJECT_NAME 명령을 실행합니다.
    • 스크립트 - /usr/bin/rgw-restore-bucket-index -b BUCKET_NAME -p DATA_POOL_NAME 을 실행합니다.

      예제

      [root@host01 ceph]# /usr/bin/rgw-restore-bucket-index -b bucket-large-1 -p local-zone.rgw.buckets.data
      
      marker is d8a347a4-99b6-4312-a5c1-75b83904b3d4.41610.2
      bucket_id is d8a347a4-99b6-4312-a5c1-75b83904b3d4.41610.2
      number of bucket index shards is 5
      data pool is local-zone.rgw.buckets.data
      NOTICE: This tool is currently considered EXPERIMENTAL.
      The list of objects that we will attempt to restore can be found in "/tmp/rgwrbi-object-list.49946".
      Please review the object names in that file (either below or in another window/terminal) before proceeding.
      Type "proceed!" to proceed, "view" to view object list, or "q" to quit: view
      Viewing...
      Type "proceed!" to proceed, "view" to view object list, or "q" to quit: proceed!
      Proceeding...
      NOTICE: Bucket stats are currently incorrect. They can be restored with the following command after 2 minutes:
          radosgw-admin bucket list --bucket=bucket-large-1 --allow-unordered --max-entries=1073741824
      Would you like to take the time to recalculate bucket stats now? [yes/no] yes
      Done
      
      real    2m16.530s
      user    0m1.082s
      sys    0m0.870s
      Copy to Clipboard Toggle word wrap

참고
  • 이 툴은 버전이 지정된 버킷에서는 작동하지 않습니다.

    [root@host01 ~]# time rgw-restore-bucket-index  --proceed serp-bu-ver-1 default.rgw.buckets.data
    NOTICE: This tool is currently considered EXPERIMENTAL.
    marker is e871fb65-b87f-4c16-a7c3-064b66feb1c4.25076.5
    bucket_id is e871fb65-b87f-4c16-a7c3-064b66feb1c4.25076.5
    Error: this bucket appears to be versioned, and this tool cannot work with versioned buckets.
    Copy to Clipboard Toggle word wrap
  • 도구의 범위는 멀티사이트가 아닌 단일 사이트로 제한됩니다. 즉, site-1에서 rgw-restore-bucket-index 도구를 실행하면 site-2에서 개체를 복구하지 않으며 그 반대의 경우도 마찬가지입니다. 다중 사이트에서는 버킷에 대해 두 사이트에서 복구 툴과 오브젝트 다시 인덱싱 명령을 실행해야 합니다.

9.3.3. 버킷 인덱스 resharding의 제한 사항

중요

다음 제한 사항을 주의하여 사용하십시오. 하드웨어 선택과 관련된 영향이 있으므로 Red Hat 계정 팀과 항상 이러한 요구 사항을 논의해야 합니다.

  • 재하드가 필요하기 전에 하나의 버킷에 있는 최대 오브젝트 수: 버킷 인덱스 shard당 최대 102,400개의 오브젝트를 사용합니다. 재하드 및 병렬 처리를 극대화하려면 Ceph Object Gateway 버킷 인덱스 풀에서 충분한 OSD를 제공합니다. 이 병렬화는 Ceph Object Gateway 인스턴스 수로 확장되며 순서 내 인덱스 shard 열거를 숫자 시퀀스로 대체합니다. 기본 잠금 제한 시간은 60초에서 90초로 연장됩니다.
  • 샤딩을 사용할 때 최대 오브젝트 수: 이전 테스트를 기반으로 현재 지원되는 버킷 인덱스 shard 수는 65521입니다. Red Hat 품질 보증은 버킷 샤딩에서 전체 확장성 테스트를 수행하지 않았습니다.
  • 샤딩을 사용할 때 최대 오브젝트 수: 이전 테스트를 기반으로 현재 지원되는 버킷 인덱스 shard 수는 65,521입니다.
  • 다른 영역이 수집되기 전에 버킷을 세 번 다시 마운트할 수 있습니다. 이전 세대가 동기화될 때까지 Resharding이 권장되지 않습니다. 이전 reshards의 약 4 세대의 버킷이 지원됩니다. 제한에 도달하면 이전 로그 생성 중 하나 이상이 완전히 트리밍될 때까지 동적 재하드가 버킷을 다시 덮어쓰지 않습니다. radosgw-admin 버킷 reshard 명령을 사용하면 다음 오류가 발생합니다.

    Bucket _BUCKET_NAME_ already has too many log generations (4) from previous reshards that peer zones haven't finished syncing.
    
    Resharding is not recommended until the old generations sync, but you can force a reshard with `--yes-i-really-mean-it`.
    Copy to Clipboard Toggle word wrap

9.3.4. 간단한 배포에서 버킷 인덱스 재하드 구성

모든 새 버킷에서 버킷 인덱스 재하드를 활성화하고 구성하려면 rgw_override_bucket_index_max_shards 매개변수를 사용합니다.

매개변수를 다음 값 중 하나로 설정할 수 있습니다.

  • 버킷 인덱스 분할을 비활성화하려면 기본값입니다.
  • 버킷 샤딩을 활성화하고 최대 shard 수를 설정하는 0 보다 큰 값입니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 최소 두 개의 사이트에 설치되어 있습니다.

프로세스

  1. 권장 shard 수를 계산합니다.

    number of objects expected in a bucket / 100,000
    Copy to Clipboard Toggle word wrap
    참고

    현재 지원되는 최대 버킷 인덱스 shard 수는 65,521입니다.

  2. 그에 따라 rgw_override_bucket_index_max_shards 옵션을 설정합니다.

    구문

    ceph config set client.rgw rgw_override_bucket_index_max_shards VALUE
    Copy to Clipboard Toggle word wrap

    VALUE 를 계산된 권장 shard 수로 바꿉니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_override_bucket_index_max_shards 12
    Copy to Clipboard Toggle word wrap

    • Ceph Object Gateway의 모든 인스턴스에 대해 버킷 인덱스 재하드를 구성하려면 글로벌 옵션을 사용하여 rgw_override_bucket_index_max_shards 매개변수를 설정합니다.
    • Ceph Object Gateway의 특정 인스턴스에 대해서만 버킷 인덱스 재하드를 구성하려면 인스턴스에 rgw_override_bucket_index_max_shards 매개변수를 추가합니다.
  3. 클러스터의 모든 노드에서 Ceph Object Gateway를 다시 시작하여 적용합니다.

    구문

    ceph orch restart SERVICE_TYPE
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root#host01 /]# ceph orch restart rgw
    Copy to Clipboard Toggle word wrap

9.3.5. 다중 사이트 배포에서 버킷 인덱스 재하드 구성

다중 사이트 배포에서 각 영역에 장애 조치를 관리하기 위해 다른 index_pool 설정이 있을 수 있습니다. 하나의 영역 그룹에서 영역에 대한 shard 수를 일관되게 구성하려면 해당 영역 그룹의 구성에 bucket_index_max_shards 매개변수를 설정합니다. bucket_index_max_shards 매개변수의 기본값은 11입니다.

매개변수를 다음 값 중 하나로 설정할 수 있습니다.

  • 버킷 인덱스 분할을 비활성화하려면 0 입니다.
  • 버킷 샤딩을 활성화하고 최대 shard 수를 설정하는 0 보다 큰 값입니다.
참고

해당하는 경우 각 영역의 인덱스 풀을 SSD 기반 OSD의 CRUSH 규칙 세트에 매핑하면 버킷 인덱스 성능에 도움이 될 수 있습니다. 자세한 내용은 성능 도메인 설정 섹션을 참조하십시오.

중요

다중 사이트 배포에서 동기화 문제를 방지하려면 버킷에 생성 간격이 3개 이상 없어야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 최소 두 개의 사이트에 설치되어 있습니다.

프로세스

  1. 권장 shard 수를 계산합니다.

    number of objects expected in a bucket / 100,000
    Copy to Clipboard Toggle word wrap
    참고

    현재 지원되는 최대 버킷 인덱스 shard 수는 65,521입니다.

  2. 영역 그룹 구성을 zonegroup.json 파일로 추출합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup get > zonegroup.json
    Copy to Clipboard Toggle word wrap

  3. zonegroup.json 파일에서 이름이 지정된 각 영역에 대해 bucket_index_max_shards 매개변수를 설정합니다.

    구문

    bucket_index_max_shards = VALUE
    Copy to Clipboard Toggle word wrap

    VALUE 를 계산된 권장 shard 수로 바꿉니다.

    예제

    bucket_index_max_shards = 12
    Copy to Clipboard Toggle word wrap

  4. 영역 그룹을 재설정합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup set < zonegroup.json
    Copy to Clipboard Toggle word wrap

  5. 기간을 업데이트합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  6. 복구가 완료되었는지 확인합니다.

    구문

    radosgw-admin reshard status --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data
    Copy to Clipboard Toggle word wrap

검증

  • 스토리지 클러스터의 동기화 상태를 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync status
    Copy to Clipboard Toggle word wrap

9.3.6. 버킷 인덱스를 동적으로 복구

resharding 큐에 버킷을 추가하여 버킷 인덱스를 동적으로 재하드할 수 있습니다. 복구할 수 있도록 계획되어 있습니다. reshard 스레드는 백그라운드에서 실행되며 한 번에 하나씩 예약된 재하드를 실행합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 최소 두 개의 사이트에 설치되어 있습니다.

프로세스

  1. rgw_dynamic_resharding 매개변수를 true 로 설정합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period get
    Copy to Clipboard Toggle word wrap

  2. 선택 사항: 다음 명령을 사용하여 Ceph 구성을 사용자 지정합니다.

    구문

    ceph config set client.rgw OPTION VALUE
    Copy to Clipboard Toggle word wrap

    OPTION을 다음 옵션으로 교체합니다.

    • rgw_reshard_num_logs: resharding 로그의 shard 수입니다. 기본값은 16 입니다.
    • rgw_reshard_bucket_lock_duration: 재하드하는 동안 버킷에 있는 잠금 기간입니다. 기본값은 360 초입니다.
    • rgw_dynamic_resharding: 동적 재하드를 활성화하거나 비활성화합니다. 기본값은 true입니다.
    • rgw_max_objs_per_shard: shard당 최대 오브젝트 수입니다. 기본값은 shard당 100000 오브젝트입니다.
    • rgw_reshard_thread_interval: reshard 스레드 처리의 라운드 사이의 최대 시간입니다. 기본값은 600 초입니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_reshard_num_logs 23
    Copy to Clipboard Toggle word wrap

  3. resharding 큐에 버킷을 추가합니다.

    구문

    radosgw-admin reshard add --bucket BUCKET --num-shards NUMBER
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin reshard add --bucket data --num-shards 10
    Copy to Clipboard Toggle word wrap

  4. resharding 큐를 나열합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin reshard list
    Copy to Clipboard Toggle word wrap

  5. 버킷 로그 생성 및 shard를 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket layout --bucket data
    {
        "layout": {
            "resharding": "None",
            "current_index": {
                "gen": 1,
                "layout": {
                    "type": "Normal",
                    "normal": {
                        "num_shards": 23,
                        "hash_type": "Mod"
                    }
                }
            },
            "logs": [
                {
                    "gen": 0,
                    "layout": {
                        "type": "InIndex",
                        "in_index": {
                            "gen": 0,
                            "layout": {
                                "num_shards": 11,
                                "hash_type": "Mod"
                            }
                        }
                    }
                },
                {
                    "gen": 1,
                    "layout": {
                        "type": "InIndex",
                        "in_index": {
                            "gen": 1,
                            "layout": {
                                "num_shards": 23,
                                "hash_type": "Mod"
                            }
                        }
                    }
                }
            ]
        }
    }
    Copy to Clipboard Toggle word wrap

  6. 버킷 재하드 상태를 확인합니다.

    구문

    radosgw-admin reshard status --bucket BUCKET
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data
    Copy to Clipboard Toggle word wrap

  7. resharding 대기열의 즉시 프로세스 항목:

    [ceph: root@host01 /]# radosgw-admin reshard process
    Copy to Clipboard Toggle word wrap
  8. 보류 중인 버킷 재하드를 취소합니다.

    주의

    보류 중인 재하드 작업만 취소할 수 있습니다. 진행 중인 재하드 작업을 취소하지 마십시오.

    구문

    radosgw-admin reshard cancel --bucket BUCKET
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin reshard cancel --bucket data
    Copy to Clipboard Toggle word wrap

검증

  • 버킷 재하드 상태를 확인합니다.

    구문

    radosgw-admin reshard status --bucket BUCKET
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data
    Copy to Clipboard Toggle word wrap

9.3.7. 다중 사이트 구성에서 버킷 인덱스 복구

Red Hat Ceph Storage는 다중 사이트 구성에서 동적 버킷 인덱스 복구 기능을 지원합니다. 이 기능을 사용하면 오브젝트 복제를 중단하지 않고 버킷을 다중 사이트 구성으로 다시 고정할 수 있습니다. rgw_dynamic_resharding 이 활성화되면 각 영역에서 독립적으로 실행되며 영역은 동일한 버킷에 대해 다른 shard 수를 선택할 수 있습니다.

다음 단계를 수행하면 기존 Red Hat Ceph Storage 클러스터 사용할 수 있습니다. 스토리지 클러스터를 업그레이드한 후 기존 영역 및 영역 그룹에서 resharding 기능을 수동으로 활성화해야 합니다.

참고

영역 및 영역 그룹은 기본적으로 지원 및 활성화됩니다.

참고

다른 영역이 수집되기 전에 버킷을 세 번 다시 고정할 수 있습니다. 자세한 내용은 버킷 인덱스 resharding의 제한을 참조하십시오.

참고

동적으로 재하드하기 위한 임계값 수보다 많은 오브젝트 수를 사용하여 버킷을 생성하고 업로드한 경우 복구 프로세스를 시작하려면 이전 버킷에 I/O를 계속 작성해야 합니다.

사전 요구 사항

  • 두 사이트의 Red Hat Ceph Storage 클러스터는 최신 버전으로 업그레이드됩니다.
  • 두 사이트에서 모두 활성화된 모든 Ceph Object Gateway 데몬이 최신 버전으로 업그레이드됩니다.
  • 모든 노드에 대한 루트 수준 액세스.

프로세스

  1. zonegroup에서 resharding 이 활성화되어 있는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync status
    Copy to Clipboard Toggle word wrap

    zonegroup에서 재하드하는 데 영역 그룹 기능이 활성화되지 않은 경우 절차를 계속합니다.

  2. Ceph Object Gateway가 설치된 다중 사이트 구성의 모든 영역 그룹에서 재하드 기능을 활성화합니다.

    구문

    radosgw-admin zonegroup modify --rgw-zonegroup=ZONEGROUP_NAME --enable-feature=resharding
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup modify --rgw-zonegroup=us --enable-feature=resharding
    Copy to Clipboard Toggle word wrap

  3. 기간 및 커밋을 업데이트합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  4. Ceph Object Gateway가 설치된 다중 사이트 구성의 모든 영역에서 Resharding 기능을 활성화합니다.

    구문

    radosgw-admin zone modify --rgw-zone=ZONE_NAME --enable-feature=resharding
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zone modify --rgw-zone=us-east --enable-feature=resharding
    Copy to Clipboard Toggle word wrap

  5. 기간 및 커밋을 업데이트합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period update --commit
    Copy to Clipboard Toggle word wrap

  6. 영역 및 영역 그룹에서 resharding 기능이 활성화되었는지 확인합니다. 각 영역에 supported_features 가 나열되고 zonegroups가 enabled_features목록을 나열하는 것을 확인할 수 있습니다.

    예제

    [ceph: root@host01 /]# radosgw-admin period get
    
    "zones": [
                        {
                            "id": "505b48db-6de0-45d5-8208-8c98f7b1278d",
                            "name": "us_east",
                            "endpoints": [
                                "http://10.0.208.11:8080"
                            ],
                            "log_meta": "false",
                            "log_data": "true",
                            "bucket_index_max_shards": 11,
                            "read_only": "false",
                            "tier_type": "",
                            "sync_from_all": "true",
                            "sync_from": [],
                            "redirect_zone": "",
                            "supported_features": [
                                "resharding"
                            ]
                    "default_placement": "default-placement",
                    "realm_id": "26cf6f23-c3a0-4d57-aae4-9b0010ee55cc",
                    "sync_policy": {
                        "groups": []
                    },
                    "enabled_features": [
                        "resharding"
                    ]
    Copy to Clipboard Toggle word wrap

  7. 동기화 상태를 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync status
              realm 26cf6f23-c3a0-4d57-aae4-9b0010ee55cc (usa)
          zonegroup 33a17718-6c77-493e-99fe-048d3110a06e (us)
               zone 505b48db-6de0-45d5-8208-8c98f7b1278d (us_east)
    zonegroup features enabled: resharding
    Copy to Clipboard Toggle word wrap

    이 예에서는 us zonegroup에 대해 resharding 기능이 활성화됩니다.

  8. 선택 사항: 영역 그룹의 복구 기능을 비활성화 할 수 있습니다.

    중요

    단일 영역에서 재하드를 비활성화하려면 해당 특정 영역에서 rgw_dynamic_resharding 구성 옵션을 false 로 설정합니다.

    1. Ceph Object Gateway가 설치된 다중 사이트의 모든 영역 그룹에서 기능을 비활성화합니다.

      구문

      radosgw-admin zonegroup modify --rgw-zonegroup=ZONEGROUP_NAME --disable-feature=resharding
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup modify --rgw-zonegroup=us --disable-feature=resharding
      Copy to Clipboard Toggle word wrap

    2. 기간 및 커밋을 업데이트합니다.

      예제

      [ceph: root@host01 /]# radosgw-admin period update --commit
      Copy to Clipboard Toggle word wrap

9.3.8. 버킷 인덱스를 수동으로 복구

버킷이 최적화된 초기 구성보다 커진 경우 radosgw-admin 버킷 reshard 명령을 사용하여 버킷 인덱스 풀을 다시 백업합니다. 이 명령은 다음 작업을 수행합니다.

  • 지정된 버킷에 대한 새 버킷 인덱스 오브젝트 세트를 생성합니다.
  • 이러한 버킷 인덱스 오브젝트에 오브젝트 항목을 배포합니다.
  • 새 버킷 인스턴스를 만듭니다.
  • 모든 새 인덱스 작업이 새 버킷 인덱스를 통과하도록 새 버킷 인스턴스를 버킷에 연결합니다.
  • 이전 및 새 버킷 ID를 명령 출력에 출력합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 최소 두 개의 사이트에 설치되어 있습니다.

프로세스

  1. 원래 버킷 인덱스를 백업합니다.

    구문

    radosgw-admin bi list --bucket=BUCKET > BUCKET.list.backup
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bi list --bucket=data > data.list.backup
    Copy to Clipboard Toggle word wrap

  2. 버킷 인덱스를 다시 작성합니다.

    구문

    radosgw-admin bucket reshard --bucket=BUCKET --num-shards=NUMBER
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket reshard --bucket=data --num-shards=100
    Copy to Clipboard Toggle word wrap

검증

  • 버킷 재하드 상태를 확인합니다.

    구문

    radosgw-admin reshard status --bucket bucket
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data
    Copy to Clipboard Toggle word wrap

9.3.9. 재하드 후 오래된 버킷 항목 정리

resharding 프로세스에서 오래된 버킷 항목을 자동으로 정리하지 못할 수 있으며 이러한 인스턴스는 스토리지 클러스터의 성능에 영향을 미칠 수 있습니다.

오래된 인스턴스가 스토리지 클러스터의 성능에 부정적인 영향을 미치지 않도록 수동으로 정리합니다.

중요

오래된 인스턴스를 정리하기 전에 Red Hat 지원에 문의하십시오.

중요

다중 사이트 클러스터에서는 이 절차를 간단한 배포에서만 사용하십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph 개체 게이트웨이가 설치되어 있어야 합니다.

프로세스

  1. 오래된 인스턴스를 나열합니다.

    [ceph: root@host01 /]# radosgw-admin reshard stale-instances list
    Copy to Clipboard Toggle word wrap
  2. 버킷 항목의 오래된 인스턴스를 정리합니다.

    [ceph: root@host01 /]# radosgw-admin reshard stale-instances rm
    Copy to Clipboard Toggle word wrap

검증

  • 버킷 재하드 상태를 확인합니다.

    구문

    radosgw-admin reshard status --bucket BUCKET
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin reshard status --bucket data
    Copy to Clipboard Toggle word wrap

9.3.10. 압축 활성화

Ceph Object Gateway는 Ceph의 압축 플러그인을 사용하여 업로드된 오브젝트의 서버 측 압축을 지원합니다. 여기에는 다음이 포함됩니다.

  • zlib: 지원됨.
  • snappy: 지원됨.
  • zstd: 지원.

설정

영역의 배치 대상에서 압축을 활성화하려면 radosgw-admin 영역 배치 수정 명령에 --compression=TYPE 옵션을 제공합니다. compression TYPE 은 새 오브젝트 데이터를 작성할 때 사용할 압축 플러그인의 이름을 나타냅니다.

각 압축 오브젝트는 압축 유형을 저장합니다. 설정을 변경해도 기존 압축 오브젝트의 압축을 해제하는 기능도 저하되지 않으며, Ceph Object Gateway에서 기존 개체의 압축을 다시 풉니다.

이 압축 설정은 이 배치 대상을 사용하여 버킷에 업로드된 모든 새 개체에 적용됩니다.

영역의 배치 대상에서 압축을 비활성화하려면 radosgw-admin 영역 배치 modify 명령에 --compression=TYPE 옵션을 제공하고 빈 문자열 또는 none 을 지정합니다.

예제

[root@host01 ~] radosgw-admin zone placement modify --rgw-zone=default --placement-id=default-placement --compression=zlib
{
...
    "placement_pools": [
        {
            "key": "default-placement",
            "val": {
                "index_pool": "default.rgw.buckets.index",
                "data_pool": "default.rgw.buckets.data",
                "data_extra_pool": "default.rgw.buckets.non-ec",
                "index_type": 0,
                "compression": "zlib"
            }
        }
    ],
...
}
Copy to Clipboard Toggle word wrap

압축을 활성화하거나 비활성화한 후 Ceph Object Gateway 인스턴스를 다시 시작하여 변경 사항이 적용됩니다.

참고

Ceph Object Gateway는 기본 영역과 일련의 풀을 생성합니다. 프로덕션 배포의 경우 먼저 Creating a Cryostat 섹션을 참조하십시오.

통계

기존 명령 및 API는 압축되지 않은 데이터를 기반으로 오브젝트 및 버킷 크기를 계속 보고하지만 radosgw-admin 버킷 통계 명령에는 모든 버킷에 대한 압축 통계가 포함되어 있습니다.

radosgw-admin 버킷 stats 명령의 사용 유형은 다음과 같습니다.

  • rgw.main 은 일반 항목 또는 오브젝트를 나타냅니다.
  • rgw.multimeta 는 불완전한 다중 파트 업로드의 메타데이터를 나타냅니다.
  • rgw.cloudtiered 는 라이프사이클 정책이 클라우드 계층으로 전환한 오브젝트를 나타냅니다. retain_head_object=true 로 구성하면 헤드 오브젝트는 더 이상 데이터가 포함되지 않은 뒤에 남아 있지만 HeadObject 요청을 통해 오브젝트의 메타데이터를 제공할 수 있습니다. 이러한 스텁 헤드 오브젝트는 rgw.cloudtiered 카테고리를 사용합니다. 자세한 내용은 Red Hat Ceph Storage Object Gateway 가이드Amazon S3 클라우드 서비스로 데이터 전송 섹션을 참조하십시오.

구문

radosgw-admin bucket stats --bucket=BUCKET_NAME
{
...
    "usage": {
        "rgw.main": {
            "size": 1075028,
            "size_actual": 1331200,
            "size_utilized": 592035,
            "size_kb": 1050,
            "size_kb_actual": 1300,
            "size_kb_utilized": 579,
            "num_objects": 104
        }
    },
...
}
Copy to Clipboard Toggle word wrap

크기는 버킷에 있는 오브젝트의 누적 크기이며 압축 해제 및 암호화되지 않습니다. size_kb 는 누적된 크기 (size/1024) 로 계산됩니다. 이 예에서는thecas (1075028/1024) = 1050 입니다.

size_actual 은 각 개체가 4096바이트 블록 세트로 배포된 후 모든 오브젝트의 누적 크기입니다. 버킷에 두 개의 오브젝트(크기 크기 4100바이트 중 하나와 8500바이트)가 있는 경우 첫 번째 오브젝트는 8192바이트까지 반올림되고 두 번째 오브젝트는 12288바이트를 반올림하고 버킷에 대한 합계는 20480바이트입니다. size_kb_actual 은 킬로바이트 단위의 실제 크기이며 size_actual/1024 로 계산됩니다. 이 예에서는 1331200/1024 = 1300 입니다.

size_utilized 는 압축 및/또는 암호화된 후 데이터의 총 크기(바이트)입니다. 암호화로 인해 오브젝트의 크기가 증가할 수 있지만 압축은 줄어들 수 있습니다. size_kb_utilized 는 총 크기(킬로바이트 단위)입니다. size_kb_utilized는 킬로바이트 단위입니다 (size_utilized/1024). 이 예에서, it is craft (592035/1024)= 579.

9.4. 사용자 관리

Ceph Object Storage 사용자 관리는 Ceph Storage 클러스터의 클라이언트 애플리케이션으로 Ceph Object Gateway가 아닌 Ceph Object Storage 서비스의 클라이언트 애플리케이션인 사용자를 나타냅니다. 클라이언트 애플리케이션이 Ceph Object Gateway 서비스와 상호 작용할 수 있도록 사용자, 키 및 시크릿을 생성해야 합니다.

다음 두 가지 사용자 유형이 있습니다.

  • 사용자: 'user'라는 용어는 S3 인터페이스의 사용자를 반영합니다.
  • 하위 사용자: 'subuser'라는 용어는 Swift 인터페이스의 사용자를 반영합니다. 하위 사용자는 사용자와 연결됩니다.

사용자와 하위 사용자를 생성, 수정, 보기, 일시 중단 및 제거할 수 있습니다.

중요

다중 사이트 배포에서 사용자를 관리하는 경우 ALWAYS는 master 영역 그룹의 마스터 영역 내의 Ceph Object Gateway 노드에서 radosgw-admin 명령을 실행하여 사용자가 다중 사이트 클러스터 전체에서 동기화되도록 합니다. 보조 영역 또는 보조 영역 그룹에서 다중 사이트 클러스터에서 사용자를 생성, 수정 또는 삭제하지 마십시오.

사용자 및 하위 사용자 ID를 만드는 것 외에도 사용자의 표시 이름과 이메일 주소를 추가할 수 있습니다. 키와 시크릿을 지정하거나 키와 시크릿을 자동으로 생성할 수 있습니다. 키를 생성하거나 지정할 때 사용자 ID는 S3 키 유형에 해당하고 하위 사용자 ID는 swift 키 유형에 해당합니다. Swift 키에는 읽기,쓰기,읽기 쓰기 전체 액세스 수준도 있습니다.

사용자 관리 명령줄 구문은 일반적으로 사용자 COMMAND USER_ID 패턴을 따릅니다. 여기서 USER_ID--uid= 옵션 뒤에 사용자의 ID(S3) 또는 --subuser= 옵션 뒤에 사용자 이름(Swift)이 옵니다.

구문

radosgw-admin user <create|modify|info|rm|suspend|enable|check|stats> <--uid=USER_ID|--subuser=SUB_USER_NAME> [other-options]
Copy to Clipboard Toggle word wrap

실행한 명령에 따라 추가 옵션이 필요할 수 있습니다.

9.4.1. 멀티 테넌시

Ceph Object Gateway는 S3 및 Swift API 모두에 대해 멀티 테넌시를 지원합니다. 여기서 각 사용자와 버킷은 "테넌트"에 있습니다. 멀티 테넌시는 여러 테넌트가 "test", "main" 등과 같은 공통 버킷 이름을 사용하는 경우 네임스페이스 충돌을 방지합니다.

각 사용자 및 버킷은 테넌트 아래에 있습니다. 이전 버전과의 호환성을 위해 빈 이름을 가진 "레거시" 테넌트가 추가됩니다. 특히 테넌트를 지정하지 않고 버킷을 참조할 때마다 Swift API는 "기존" 테넌트를 가정합니다. 기존 사용자는 또한 레거시 테넌트 아래에 저장되므로 이전 릴리스와 동일한 방식으로 버킷 및 개체에 액세스합니다.

이와 같은 테넌트에는 작업이 없습니다. 사용자는 필요에 따라 표시되고 사라집니다. 명시적 테넌트가 있는 사용자를 생성, 수정 및 제거하기 위해 추가 옵션 --tenant 가 제공되거나 radosgw-admin 명령의 매개변수에 "TENANT$USER" 구문이 사용됩니다.

S3에 대한 testx$tester 사용자를 생성하려면 다음 명령을 실행합니다.

예제

[root@host01 ~]# radosgw-admin --tenant testx --uid tester \
                    --display-name "Test User" --access_key TESTER \
                    --secret test123 user create
Copy to Clipboard Toggle word wrap

Swift에 대한 testx$tester 사용자를 만들려면 다음 명령 중 하나를 실행합니다.

예제

[root@host01 ~]# radosgw-admin --tenant testx --uid tester \
                    --display-name "Test User" --subuser tester:swift \
                    --key-type swift --access full subuser create

[root@host01 ~]# radosgw-admin key create --subuser 'testx$tester:swift' \
                    --key-type swift --secret test123
Copy to Clipboard Toggle word wrap

참고

명시적 테넌트를 사용하는 하위 사용자는 쉘에서 인용해야 했습니다.

9.4.2. 사용자 생성

user create 명령을 사용하여 S3-interface 사용자를 생성합니다. 사용자 ID와 표시 이름을 지정해야 합니다. 이메일 주소도 지정할 수 있습니다. 키 또는 시크릿을 지정하지 않으면 radosgw-admin 이 자동으로 생성됩니다. 그러나 생성된 키/시크릿 쌍을 사용하지 않으려면 키 및/또는 시크릿을 지정할 수 있습니다.

구문

radosgw-admin user create --uid=USER_ID \
[--key-type=KEY_TYPE] [--gen-access-key|--access-key=ACCESS_KEY]\
[--gen-secret | --secret=SECRET_KEY] \
[--email=EMAIL] --display-name=DISPLAY_NAME
Copy to Clipboard Toggle word wrap

예제

[root@host01 ~]# radosgw-admin user create --uid=janedoe --access-key=11BS02LGFB6AL6H1ADMW --secret=vzCEkuryfn060dfee4fgQPqFrncKEIkh3ZcdOANY --email=jane@example.com --display-name=Jane Doe
Copy to Clipboard Toggle word wrap

{ "user_id": "janedoe",
  "display_name": "Jane Doe",
  "email": "jane@example.com",
  "suspended": 0,
  "max_buckets": 1000,
  "auid": 0,
  "subusers": [],
  "keys": [
        { "user": "janedoe",
          "access_key": "11BS02LGFB6AL6H1ADMW",
          "secret_key": "vzCEkuryfn060dfee4fgQPqFrncKEIkh3ZcdOANY"}],
  "swift_keys": [],
  "caps": [],
  "op_mask": "read, write, delete",
  "default_placement": "",
  "placement_tags": [],
  "bucket_quota": { "enabled": false,
      "max_size_kb": -1,
      "max_objects": -1},
  "user_quota": { "enabled": false,
      "max_size_kb": -1,
      "max_objects": -1},
  "temp_url_keys": []}
Copy to Clipboard Toggle word wrap
중요

키 출력을 확인합니다. radosgw-admin 이 JSON 이스케이프(\) 문자를 생성하고 일부 클라이언트는 JSON 이스케이프 문자를 처리하는 방법을 모르는 경우가 있습니다. 조치에는 JSON 이스케이프 문자(\) 제거, 따옴표로 문자열 캡슐화, JSON 이스케이프 문자가 없는지 확인하기 위해 키를 다시 생성하거나 키와 시크릿을 수동으로 지정하는 작업이 포함됩니다.

9.4.3. 하위 사용자 생성

하위 사용자(Swift 인터페이스)를 생성하려면 사용자 ID(--uid=USERNAME), 하위 사용자 ID 및 하위 사용자의 액세스 수준을 지정해야 합니다. 키 또는 시크릿을 지정하지 않으면 radosgw-admin 이 자동으로 생성합니다. 그러나 생성된 키 및 시크릿 쌍을 사용하지 않으려면 키, 시크릿 또는 둘 다 지정할 수 있습니다.

참고

full 은 액세스 제어 정책도 포함되어 있으므로 readwrite 가 아닙니다.

구문

 radosgw-admin subuser create --uid=USER_ID --subuser=SUB_USER_ID --access=[ read | write | readwrite | full ]
Copy to Clipboard Toggle word wrap

예제

[root@host01 ~]# radosgw-admin subuser create --uid=janedoe --subuser=janedoe:swift --access=full

{ "user_id": "janedoe",
  "display_name": "Jane Doe",
  "email": "jane@example.com",
  "suspended": 0,
  "max_buckets": 1000,
  "auid": 0,
  "subusers": [
        { "id": "janedoe:swift",
          "permissions": "full-control"}],
  "keys": [
        { "user": "janedoe",
          "access_key": "11BS02LGFB6AL6H1ADMW",
          "secret_key": "vzCEkuryfn060dfee4fgQPqFrncKEIkh3ZcdOANY"}],
  "swift_keys": [],
  "caps": [],
  "op_mask": "read, write, delete",
  "default_placement": "",
  "placement_tags": [],
  "bucket_quota": { "enabled": false,
      "max_size_kb": -1,
      "max_objects": -1},
  "user_quota": { "enabled": false,
      "max_size_kb": -1,
      "max_objects": -1},
  "temp_url_keys": []}
Copy to Clipboard Toggle word wrap

9.4.4. 사용자 정보 가져오기

사용자에 대한 정보를 얻으려면 사용자 정보와 사용자 ID를 지정합니다(--uid=USERNAME).

예제

[root@host01 ~]# radosgw-admin user info --uid=janedoe
Copy to Clipboard Toggle word wrap

테넌트된 사용자에 대한 정보를 얻으려면 사용자 ID와 테넌트의 이름을 둘 다 지정합니다.

[root@host01 ~]# radosgw-admin user info --uid=janedoe --tenant=test
Copy to Clipboard Toggle word wrap

9.4.5. 사용자 정보 수정

사용자에 대한 정보를 수정하려면 사용자 ID(--uid=USERNAME)와 수정할 속성을 지정해야 합니다. 일반적인 수정 사항은 키와 시크릿, 이메일 주소, 표시 이름 및 액세스 수준에 대한 것입니다.

예제

[root@host01 ~]# radosgw-admin user modify --uid=janedoe --display-name="Jane E. Doe"
Copy to Clipboard Toggle word wrap

하위 사용자 값을 수정하려면 하위 사용자 수정 및 하위 사용자 ID를 지정합니다.

예제

[root@host01 ~]# radosgw-admin subuser modify --subuser=janedoe:swift --access=full
Copy to Clipboard Toggle word wrap

9.4.6. 사용자 활성화 및 일시 중단

사용자를 생성하면 기본적으로 사용자가 활성화됩니다. 그러나 사용자 권한을 중지하고 나중에 다시 활성화할 수 있습니다. 사용자를 일시 중지하려면 사용자 일시 중단 및 사용자 ID를 지정합니다.

[root@host01 ~]# radosgw-admin user suspend --uid=johndoe
Copy to Clipboard Toggle word wrap

일시 중지된 사용자를 다시 활성화하려면 사용자 활성화 및 사용자 ID를 지정합니다.

[root@host01 ~]# radosgw-admin user enable --uid=johndoe
Copy to Clipboard Toggle word wrap
참고

사용자를 비활성화하면 하위 사용자가 비활성화됩니다.

9.4.7. 사용자 제거

사용자를 제거하면 사용자와 하위 사용자가 시스템에서 제거됩니다. 그러나 원하는 경우에만 하위 사용자를 제거할 수 있습니다. 사용자(및 하위 사용자)를 제거하려면 사용자 rm 과 사용자 ID를 지정합니다.

구문

radosgw-admin user rm --uid=USER_ID[--purge-keys] [--purge-data]
Copy to Clipboard Toggle word wrap

예제

[ceph: root@host01 /]# radosgw-admin user rm --uid=johndoe --purge-data
Copy to Clipboard Toggle word wrap

하위 사용자만 제거하려면 하위 사용자 rm 과 하위 사용자 이름을 지정합니다.

예제

[ceph: root@host01 /]# radosgw-admin subuser rm --subuser=johndoe:swift --purge-keys
Copy to Clipboard Toggle word wrap

옵션은 다음과 같습니다.

  • 데이터 제거: --purge-data 옵션은 UID와 관련된 모든 데이터를 제거합니다.
  • 제거 키: --purge-keys 옵션은 UID와 연결된 모든 키를 제거합니다.

9.4.8. 하위 사용자 제거

하위 사용자를 제거하면 Swift 인터페이스에 대한 액세스를 제거합니다. 사용자는 시스템에 남아 있습니다. 하위 사용자를 제거하려면 하위 사용자 rm과 하위 사용자 ID를 지정합니다.

구문

radosgw-admin subuser rm --subuser=SUB_USER_ID
Copy to Clipboard Toggle word wrap

예제

[root@host01 /]# radosgw-admin subuser rm --subuser=johndoe:swift
Copy to Clipboard Toggle word wrap

옵션은 다음과 같습니다.

  • 제거 키: --purge-keys 옵션은 UID와 연결된 모든 키를 제거합니다.

9.4.9. 사용자 이름 변경

사용자 이름을 변경하려면 radosgw-admin 사용자 rename 명령을 사용합니다. 이 명령이 사용하는 시간은 사용자가 보유한 버킷 및 오브젝트 수에 따라 다릅니다. 번호가 크면 screen 패키지에서 제공하는 Screen 유틸리티에서 명령을 사용하는 것이 좋습니다.

사전 요구 사항

  • 작동 중인 Ceph 클러스터입니다.
  • Ceph Object Gateway를 실행하는 호스트에 대한 루트 또는 sudo 액세스.
  • 설치된 Ceph Object Gateway입니다.

프로세스

  1. 사용자 이름을 변경합니다.

    구문

    radosgw-admin user rename --uid=CURRENT_USER_NAME --new-uid=NEW_USER_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin user rename --uid=user1 --new-uid=user2
    
    {
        "user_id": "user2",
        "display_name": "user 2",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "auid": 0,
        "subusers": [],
        "keys": [
            {
                "user": "user2",
                "access_key": "59EKHI6AI9F8WOW8JQZJ",
                "secret_key": "XH0uY3rKCUcuL73X0ftjXbZqUbk0cavD11rD8MsA"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw"
    }
    Copy to Clipboard Toggle word wrap

    사용자가 테넌트 내에 있는 경우 사용자 이름과 테넌트를 둘 다 지정합니다.

    구문

    radosgw-admin user rename --uid USER_NAME --new-uid NEW_USER_NAME --tenant TENANT
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin user rename --uid=test$user1 --new-uid=test$user2 --tenant test
    
    1000 objects processed in tvtester1. Next marker 80_tVtester1_99
    2000 objects processed in tvtester1. Next marker 64_tVtester1_44
    3000 objects processed in tvtester1. Next marker 48_tVtester1_28
    4000 objects processed in tvtester1. Next marker 2_tVtester1_74
    5000 objects processed in tvtester1. Next marker 14_tVtester1_53
    6000 objects processed in tvtester1. Next marker 87_tVtester1_61
    7000 objects processed in tvtester1. Next marker 6_tVtester1_57
    8000 objects processed in tvtester1. Next marker 52_tVtester1_91
    9000 objects processed in tvtester1. Next marker 34_tVtester1_74
    9900 objects processed in tvtester1. Next marker 9_tVtester1_95
    1000 objects processed in tvtester2. Next marker 82_tVtester2_93
    2000 objects processed in tvtester2. Next marker 64_tVtester2_9
    3000 objects processed in tvtester2. Next marker 48_tVtester2_22
    4000 objects processed in tvtester2. Next marker 32_tVtester2_42
    5000 objects processed in tvtester2. Next marker 16_tVtester2_36
    6000 objects processed in tvtester2. Next marker 89_tVtester2_46
    7000 objects processed in tvtester2. Next marker 70_tVtester2_78
    8000 objects processed in tvtester2. Next marker 51_tVtester2_41
    9000 objects processed in tvtester2. Next marker 33_tVtester2_32
    9900 objects processed in tvtester2. Next marker 9_tVtester2_83
    {
        "user_id": "test$user2",
        "display_name": "User 2",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "auid": 0,
        "subusers": [],
        "keys": [
            {
                "user": "test$user2",
                "access_key": "user2",
                "secret_key": "123456789"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw"
    }
    Copy to Clipboard Toggle word wrap

  2. 사용자의 이름이 성공적으로 변경되었는지 확인합니다.

    구문

    radosgw-admin user info --uid=NEW_USER_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin user info --uid=user2
    Copy to Clipboard Toggle word wrap

    사용자가 테넌트 내에 있는 경우 TENANT$USER_NAME 형식을 사용합니다.

    구문

    radosgw-admin user info --uid= TENANT$USER_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin user info --uid=test$user2
    Copy to Clipboard Toggle word wrap

9.4.10. 키 생성

사용자의 키를 생성하려면 키 생성 을 지정해야 합니다. 사용자의 경우 사용자 ID 및 s3 키 유형을 지정합니다. 하위 사용자에 대한 키를 생성하려면 하위 사용자 ID와 swift 키 유형을 지정해야 합니다.

예제

[ceph: root@host01 /]# radosgw-admin key create --subuser=johndoe:swift --key-type=swift --gen-secret

{ "user_id": "johndoe",
  "rados_uid": 0,
  "display_name": "John Doe",
  "email": "john@example.com",
  "suspended": 0,
  "subusers": [
     { "id": "johndoe:swift",
       "permissions": "full-control"}],
  "keys": [
    { "user": "johndoe",
      "access_key": "QFAMEDSJP5DEKJO0DDXY",
      "secret_key": "iaSFLDVvDdQt6lkNzHyW4fPLZugBAI1g17LO0+87"}],
  "swift_keys": [
    { "user": "johndoe:swift",
      "secret_key": "E9T2rUZNu2gxUjcwUBO8n\/Ev4KX6\/GprEuH4qhu1"}]}
Copy to Clipboard Toggle word wrap

9.4.11. 액세스 키 추가 및 제거

사용자 및 하위 사용자는 S3 및 Swift 인터페이스를 사용하려면 액세스 키가 있어야 합니다. 사용자 또는 하위 사용자를 생성하고 액세스 키와 시크릿을 지정하지 않으면 키와 시크릿이 자동으로 생성됩니다. 키를 생성하고 액세스 키 및/또는 시크릿을 지정하거나 생성할 수 있습니다. 액세스 키와 시크릿을 제거할 수도 있습니다. 옵션은 다음과 같습니다.

  • --secret=SECRET_KEY 는 시크릿 키를 지정합니다(예: 수동으로 생성).
  • --Gen-access-key 는 임의의 액세스 키(기본적으로 S3 사용자용)를 생성합니다.
  • --Gen-secret 은 임의의 보안 키를 생성합니다.
  • --key-type=KEY_TYPE 은 키 유형을 지정합니다. 옵션은 swift 및 s3입니다.

키를 추가하려면 사용자를 지정합니다.

예제

[root@host01 ~]# radosgw-admin key create --uid=johndoe --key-type=s3 --gen-access-key --gen-secret
Copy to Clipboard Toggle word wrap

키와 시크릿을 지정할 수도 있습니다.

액세스 키를 제거하려면 사용자와 키를 지정해야 합니다.

  1. 특정 사용자의 액세스 키를 찾습니다.

    예제

    [root@host01 ~]# radosgw-admin user info --uid=johndoe
    Copy to Clipboard Toggle word wrap

    액세스 키는 출력의 "access_key" 값입니다.

    예제

    [root@host01 ~]# radosgw-admin user info --uid=johndoe
    {
        "user_id": "johndoe",
        ...
        "keys": [
            {
                "user": "johndoe",
                "access_key": "0555b35654ad1656d804",
                "secret_key": "h7GhxuBLTrlhVUyxSPUKUV8r/2EI4ngqJxD7iBdBYLhwluN30JaT3Q=="
            }
        ],
        ...
    }
    Copy to Clipboard Toggle word wrap

  2. 액세스 키를 제거하려면 사용자 ID와 이전 단계의 액세스 키를 지정합니다.

    구문

    radosgw-admin key rm --uid=USER_ID --access-key ACCESS_KEY
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin key rm --uid=johndoe --access-key 0555b35654ad1656d804
    Copy to Clipboard Toggle word wrap

9.4.12. 관리자 기능 추가 및 제거

Ceph Storage 클러스터는 사용자가 REST API를 통해 관리 기능을 실행할 수 있는 관리 API를 제공합니다. 기본적으로 사용자는 이 API에 액세스할 수 없습니다. 사용자가 관리 기능을 수행할 수 있도록 하려면 사용자에게 관리 기능을 제공합니다.

사용자에게 관리 기능을 추가하려면 다음 명령을 실행합니다.

구문

radosgw-admin caps add --uid=USER_ID--caps=CAPS
Copy to Clipboard Toggle word wrap

사용자, 버킷, 메타데이터 및 사용량(utilization)에 읽기, 쓰기 또는 모든 기능을 추가할 수 있습니다.

구문

--caps="[users|buckets|metadata|usage|zone]=[*|read|write|read, write]"
Copy to Clipboard Toggle word wrap

예제

[root@host01 ~]# radosgw-admin caps add --uid=johndoe --caps="users=*"
Copy to Clipboard Toggle word wrap

사용자의 관리 기능을 제거하려면 다음 명령을 실행합니다.

예제

[root@host01 ~]# radosgw-admin caps remove --uid=johndoe --caps={caps}
Copy to Clipboard Toggle word wrap

9.5. 역할 관리

스토리지 관리자는 radosgw-admin 명령을 사용하여 역할 및 해당 역할과 연결된 권한을 생성, 삭제 또는 업데이트할 수 있습니다.

역할은 사용자와 유사하며 권한 정책이 연결되어 있습니다. 모든 ID로 간주할 수 있습니다. 사용자가 역할을 가정하면 동적으로 생성된 임시 인증 정보 세트가 사용자에게 반환됩니다. 역할은 일부 S3 리소스에 액세스할 수 있는 권한이 없는 사용자, 애플리케이션 및 서비스에 대한 액세스를 위임하는 데 사용할 수 있습니다.

9.5.1. 역할 생성

radosgw-admin role create 명령을 사용하여 사용자의 역할을 생성합니다. 명령에 assume-role-policy-doc 매개 변수를 사용하여 사용자를 생성해야 합니다. 이 매개 변수는 엔터티에 역할을 가정할 수 있는 권한을 부여하는 신뢰 관계 정책 문서입니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • 역할을 생성합니다.

    구문

    radosgw-admin role create --role-name=ROLE_NAME [--path=="PATH_TO_FILE"] [--assume-role-policy-doc=TRUST_RELATIONSHIP_POLICY_DOCUMENT]
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role create --role-name=S3Access1 --path=/application_abc/component_xyz/ --assume-role-policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Principal\":\{\"AWS\":\[\"arn:aws:iam:::user/TESTER\"\]\},\"Action\":\[\"sts:AssumeRole\"\]\}\]\}
    
    {
      "RoleId": "ca43045c-082c-491a-8af1-2eebca13deec",
      "RoleName": "S3Access1",
      "Path": "/application_abc/component_xyz/",
      "Arn": "arn:aws:iam:::role/application_abc/component_xyz/S3Access1",
      "CreateDate": "2022-06-17T10:18:29.116Z",
      "MaxSessionDuration": 3600,
      "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/TESTER\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
    }
    Copy to Clipboard Toggle word wrap

    --path 의 값은 기본적으로 / 입니다.

9.5.2. 역할 가져오기

get 명령을 사용하여 역할에 대한 정보를 가져옵니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 생성된 역할입니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • 역할에 대한 정보를 가져옵니다.

    구문

    radosgw-admin role get --role-name=ROLE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role get --role-name=S3Access1
    
    {
      "RoleId": "ca43045c-082c-491a-8af1-2eebca13deec",
      "RoleName": "S3Access1",
      "Path": "/application_abc/component_xyz/",
      "Arn": "arn:aws:iam:::role/application_abc/component_xyz/S3Access1",
      "CreateDate": "2022-06-17T10:18:29.116Z",
      "MaxSessionDuration": 3600,
      "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/TESTER\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
    }
    Copy to Clipboard Toggle word wrap

9.5.3. 역할 나열

list 명령을 사용하여 특정 경로의 역할을 나열 할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 생성된 역할입니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • 역할을 나열합니다.

    구문

    radosgw-admin role list
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role list
    
    [
        {
            "RoleId": "85fb46dd-a88a-4233-96f5-4fb54f4353f7",
            "RoleName": "kvm-sts",
            "Path": "/application_abc/component_xyz/",
            "Arn": "arn:aws:iam:::role/application_abc/component_xyz/kvm-sts",
            "CreateDate": "2022-09-13T11:55:09.39Z",
            "MaxSessionDuration": 7200,
            "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/kvm\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
        },
        {
            "RoleId": "9116218d-4e85-4413-b28d-cdfafba24794",
            "RoleName": "kvm-sts-1",
            "Path": "/application_abc/component_xyz/",
            "Arn": "arn:aws:iam:::role/application_abc/component_xyz/kvm-sts-1",
            "CreateDate": "2022-09-16T00:05:57.483Z",
            "MaxSessionDuration": 3600,
            "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/kvm\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
        }
    ]
    Copy to Clipboard Toggle word wrap

9.5.4. 역할의 역할 정책 문서 업데이트

modify 명령으로 역할을 가정할 수 있도록 엔터티 권한을 부여하는 assume 역할 정책 문서를 업데이트할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 생성된 역할입니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • 역할의 assume 역할 정책 문서를 수정합니다.

    구문

    radosgw-admin role-trust-policy modify --role-name=ROLE_NAME --assume-role-policy-doc=TRUST_RELATIONSHIP_POLICY_DOCUMENT
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role-trust-policy modify --role-name=S3Access1 --assume-role-policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Principal\":\{\"AWS\":\[\"arn:aws:iam:::user/TESTER\"\]\},\"Action\":\[\"sts:AssumeRole\"\]\}\]\}
    
    {
      "RoleId": "ca43045c-082c-491a-8af1-2eebca13deec",
      "RoleName": "S3Access1",
      "Path": "/application_abc/component_xyz/",
      "Arn": "arn:aws:iam:::role/application_abc/component_xyz/S3Access1",
      "CreateDate": "2022-06-17T10:18:29.116Z",
      "MaxSessionDuration": 3600,
      "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/TESTER\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
    }
    Copy to Clipboard Toggle word wrap

9.5.5. 역할에 연결된 권한 정책 가져오기

get 명령을 사용하여 역할에 연결된 특정 권한 정책을 가져올 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 생성된 역할입니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • 권한 정책을 가져옵니다.

    구문

    radosgw-admin role-policy get --role-name=ROLE_NAME --policy-name=POLICY_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role-policy get --role-name=S3Access1 --policy-name=Policy1
    
    {
      "Permission policy": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"s3:*\"],\"Resource\":\"arn:aws:s3:::example_bucket\"}]}"
    }
    Copy to Clipboard Toggle word wrap

9.5.6. 역할 삭제

연결된 권한 정책을 제거한 후에만 역할을 삭제할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • 생성된 역할입니다.
  • S3 버킷이 생성되었습니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  1. 역할에 연결된 정책을 삭제합니다.

    구문

    radosgw-admin role policy delete --role-name=ROLE_NAME --policy-name=POLICY_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role policy delete --role-name=S3Access1 --policy-name=Policy1
    Copy to Clipboard Toggle word wrap

  2. 역할을 삭제합니다.

    구문

    radosgw-admin role delete --role-name=ROLE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role delete --role-name=S3Access1
    Copy to Clipboard Toggle word wrap

9.5.7. 역할에 연결된 정책 업데이트

put 명령을 사용하여 역할에 연결된 인라인 정책을 추가하거나 업데이트할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 생성된 역할입니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • 인라인 정책을 업데이트합니다.

    구문

    radosgw-admin role-policy put --role-name=ROLE_NAME --policy-name=POLICY_NAME --policy-doc=PERMISSION_POLICY_DOCUMENT
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role-policy put --role-name=S3Access1 --policy-name=Policy1 --policy-doc=\{\"Version\":\"2012-10-17\",\"Statement\":\[\{\"Effect\":\"Allow\",\"Action\":\[\"s3:*\"\],\"Resource\":\"arn:aws:s3:::example_bucket\"\}\]\}
    Copy to Clipboard Toggle word wrap

    이 예제에서는 Policy1example_bucket 의 모든 S3 작업을 허용하는 S3Access1 역할에 연결합니다.

9.5.8. 역할에 연결된 권한 정책 나열

list 명령을 사용하여 역할에 연결된 권한 정책의 이름을 나열 할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 생성된 역할입니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • 권한 정책의 이름을 나열합니다.

    구문

    radosgw-admin role-policy list --role-name=ROLE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role-policy list --role-name=S3Access1
    
    [
      "Policy1"
    ]
    Copy to Clipboard Toggle word wrap

9.5.9. 역할에 연결된 정책 삭제

rm 명령을 사용하여 역할에 연결된 권한 정책을 삭제할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 생성된 역할입니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • 권한 정책을 삭제합니다.

    구문

    radosgw-admin role policy delete --role-name=ROLE_NAME --policy-name=POLICY_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin role policy delete --role-name=S3Access1 --policy-name=Policy1
    Copy to Clipboard Toggle word wrap

9.5.10. 역할의 세션 기간 업데이트

update 명령을 사용하여 역할의 세션 기간을 업데이트하여 제공된 인증 정보를 사용하여 사용자에게 로그인할 수 있는 시간을 제어할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 생성된 역할입니다.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  • update 명령을 사용하여 max-session-duration을 업데이트합니다.

    구문

    [root@node1 ~]# radosgw-admin role update --role-name=ROLE_NAME --max-session-duration=7200
    Copy to Clipboard Toggle word wrap

    예제

    [root@node1 ~]# radosgw-admin role update --role-name=test-sts-role --max-session-duration=7200
    Copy to Clipboard Toggle word wrap

검증

  • 역할을 나열하여 업데이트를 확인합니다.

    예제

    [root@node1 ~]#radosgw-admin role list
    [
        {
            "RoleId": "d4caf33f-caba-42f3-8bd4-48c84b4ea4d3",
            "RoleName": "test-sts-role",
            "Path": "/",
            "Arn": "arn:aws:iam:::role/test-role",
            "CreateDate": "2022-09-07T20:01:15.563Z",
            "MaxSessionDuration": 7200,				<<<<<<
            "AssumeRolePolicyDocument": "{\"Version\":\"2012-10-17\",\"Statement\":[{\"Effect\":\"Allow\",\"Principal\":{\"AWS\":[\"arn:aws:iam:::user/kvm\"]},\"Action\":[\"sts:AssumeRole\"]}]}"
        }
    ]
    Copy to Clipboard Toggle word wrap

9.6. 할당량 관리

Ceph 개체 게이트웨이를 사용하면 사용자가 소유한 사용자와 버킷에 할당량을 설정할 수 있습니다. 쿼터에는 버킷의 최대 오브젝트 수와 최대 스토리지 크기(MB)가 포함됩니다.

  • bucket: --bucket 옵션을 사용하면 사용자가 소유한 버킷에 대한 할당량을 지정할 수 있습니다.
  • 최대 오브젝트: --max-objects 설정을 사용하면 최대 오브젝트 수를 지정할 수 있습니다. 음수 값은 이 설정을 비활성화합니다.
  • 최대 크기: --max-size 옵션을 사용하면 최대 바이트 수에 대한 할당량을 지정할 수 있습니다. 음수 값은 이 설정을 비활성화합니다.
  • 할당량 범위: --quota-scope 옵션은 할당량 범위를 설정합니다. 옵션은 버킷사용자 입니다. 버킷 할당량은 사용자가 소유한 버킷에 적용됩니다. 사용자 할당량은 사용자에게 적용됩니다.
중요

오브젝트 수가 많은 버킷으로 인해 심각한 성능 문제가 발생할 수 있습니다. 하나의 버킷에서 권장되는 최대 오브젝트 수는 100,000개입니다. 이 수를 늘리려면 버킷 인덱스 분할을 구성합니다. 자세한 내용은 Configuring bucket index resharding을 참조하십시오.

9.6.1. 사용자 할당량 설정

할당량을 활성화하기 전에 먼저 할당량 매개 변수를 설정해야 합니다.

구문

radosgw-admin quota set --quota-scope=user --uid=USER_ID [--max-objects=NUMBER_OF_OBJECTS] [--max-size=MAXIMUM_SIZE_IN_BYTES]
Copy to Clipboard Toggle word wrap

예제

[root@host01 ~]# radosgw-admin quota set --quota-scope=user --uid=johndoe --max-objects=1024 --max-size=1024
Copy to Clipboard Toggle word wrap

num 오브젝트 및/또는 max 크기에 대한 음수 값은 특정 할당량 특성 검사가 비활성화되어 있음을 의미합니다.

9.6.2. 사용자 할당량 활성화 및 비활성화

사용자 할당량을 설정하면 활성화할 수 있습니다.

구문

radosgw-admin quota enable --quota-scope=user --uid=USER_ID
Copy to Clipboard Toggle word wrap

활성화된 사용자 할당량을 비활성화할 수 있습니다.

구문

radosgw-admin quota disable --quota-scope=user --uid=USER_ID
Copy to Clipboard Toggle word wrap

9.6.3. 버킷 할당량 설정

버킷 할당량은 지정된 uid 가 소유한 버킷에 적용됩니다. 사용자와 독립적입니다.

구문

radosgw-admin quota set --uid=USER_ID --quota-scope=bucket --bucket=BUCKET_NAME [--max-objects=NUMBER_OF_OBJECTS] [--max-size=MAXIMUM_SIZE_IN_BYTES]
Copy to Clipboard Toggle word wrap

NUMBER_OF_OBJECTS,MAXIMUM_SIZE_IN_BYTES 의 음수 값은 특정 할당량 특성 검사가 비활성화됨을 의미합니다.

9.6.4. 버킷 할당량 활성화 및 비활성화

버킷 할당량을 설정하고 나면 활성화할 수 있습니다.

구문

radosgw-admin quota enable --quota-scope=bucket --uid=USER_ID
Copy to Clipboard Toggle word wrap

활성화된 버킷 할당량을 비활성화할 수 있습니다.

구문

radosgw-admin quota disable --quota-scope=bucket --uid=USER_ID
Copy to Clipboard Toggle word wrap

9.6.5. 할당량 설정 가져오기

사용자 정보 API를 통해 각 사용자의 할당량 설정에 액세스할 수 있습니다. CLI 인터페이스를 사용하여 사용자 할당량 설정 정보를 읽으려면 다음 명령을 실행합니다.

구문

radosgw-admin user info --uid=USER_ID
Copy to Clipboard Toggle word wrap

테넌트된 사용자의 할당량 설정을 가져오려면 사용자 ID와 테넌트 이름을 지정합니다.

구문

radosgw-admin user info --uid=USER_ID --tenant=TENANT
Copy to Clipboard Toggle word wrap

9.6.6. 할당량 통계 업데이트

할당량 통계가 비동기적으로 업데이트됩니다. 모든 사용자와 모든 버킷에 대한 할당량 통계를 수동으로 업데이트하여 최신 할당량 통계를 검색할 수 있습니다.

구문

radosgw-admin user stats --uid=USER_ID --sync-stats
Copy to Clipboard Toggle word wrap

9.6.7. 사용자 할당량 사용량 통계 가져오기

사용자가 사용한 할당량의 양을 보려면 다음 명령을 실행합니다.

구문

radosgw-admin user stats --uid=USER_ID
Copy to Clipboard Toggle word wrap

참고

최신 데이터를 받으려면 --sync-stats 옵션과 함께 radosgw-admin user stats 명령을 실행해야 합니다.

9.6.8. 할당량 캐시

할당량 통계는 각 Ceph Gateway 인스턴스에 대해 캐시됩니다. 여러 인스턴스가 있는 경우 각 인스턴스에 할당량에 대한 다른 보기가 있으므로 캐시에서 할당량이 완전히 적용되지 않도록 유지할 수 있습니다. 이를 제어하는 옵션은 rgw 버킷 할당량 ttl,rgw 사용자 할당량 버킷 동기화 간격, rgw 사용자 할당량 동기화 간격입니다. 이러한 값이 클수록 할당량 작업이 더 효율적이지만 동기화되지 않은 여러 인스턴스는 다음과 같습니다. 이러한 값이 작을수록 완벽한 시행에 더 근접하게 여러 인스턴스를 얻을 수 있습니다. 이 세 개가 모두 0이면 할당량 캐싱이 효과적으로 비활성화되고 여러 인스턴스가 할당량을 완벽하게 시행합니다.

9.6.9. 글로벌 할당량 읽기 및 쓰기

영역 그룹 맵에서 할당량 설정을 읽고 쓸 수 있습니다. 영역 그룹 맵을 가져오려면 다음을 수행합니다.

[root@host01 ~]# radosgw-admin global quota get
Copy to Clipboard Toggle word wrap

글로벌 할당량 설정은 할당량 세트의 글로벌 할당량 카운터, 할당량 활성화 , 할당량 비활성화 명령을 사용하여 조작할 수 있습니다. 예를 들면 다음과 같습니다.

[root@host01 ~]# radosgw-admin global quota set --quota-scope bucket --max-objects 1024
[root@host01 ~]# radosgw-admin global quota enable --quota-scope bucket
Copy to Clipboard Toggle word wrap
참고

영역과 기간이 있는 다중 사이트 구성에서 글로벌 할당량에 대한 변경 사항을 period update --commit 를 사용하여 커밋해야 합니다. 기간이 없는 경우 변경 사항을 적용하려면 Ceph Object Gateway를 다시 시작해야 합니다.

9.7. 버킷 관리

스토리지 관리자는 Ceph Object Gateway를 사용할 때 사용자 간에 이동하고 이름을 변경하여 버킷을 관리할 수 있습니다. 특정 이벤트에서 트리거하도록 버킷 알림을 생성할 수 있습니다. 또한 스토리지 클러스터의 수명 동안 발생할 수 있는 Ceph Object Gateway 내에서 고립되거나 누출된 오브젝트도 찾을 수 있습니다.

참고

수집 속도가 높은 수백만 개의 오브젝트가 Ceph Object Gateway 버킷에 업로드되면 radosgw-admin 버킷 통계 명령을 사용하여 잘못된 num_objects 가 보고됩니다. radosgw-admin 버킷 목록 명령을 사용하면 num_objects 매개변수 값을 수정할 수 있습니다.

참고

다중 사이트 클러스터에서 보조 사이트에서 버킷을 삭제해도 메타데이터 변경 사항이 기본 사이트와 동기화되지 않습니다. 따라서 Red Hat은 보조 사이트에서가 아닌 기본 사이트에서만 버킷을 삭제하는 것이 좋습니다.

9.7.1. 버킷 이름 변경

버킷의 이름을 바꿀 수 있습니다. 버킷 이름에 밑줄을 허용하려면 rgw_relaxed_s3_bucket_names 옵션을 true 로 설정합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • 기존 버킷입니다.

프로세스

  1. 버킷을 나열합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list
    [
        "34150b2e9174475db8e191c188e920f6/swcontainer",
        "s3bucket1",
        "34150b2e9174475db8e191c188e920f6/swimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/ec2container",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten1",
        "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct",
        "c278edd68cfb4705bb3e07837c7ad1a8/demopostup",
        "34150b2e9174475db8e191c188e920f6/postimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten2",
        "c278edd68cfb4705bb3e07837c7ad1a8/postupsw"
    ]
    Copy to Clipboard Toggle word wrap

  2. 버킷의 이름을 변경합니다.

    구문

    radosgw-admin bucket link --bucket=ORIGINAL_NAME --bucket-new-name=NEW_NAME --uid=USER_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --bucket=s3bucket1 --bucket-new-name=s3newb --uid=testuser
    Copy to Clipboard Toggle word wrap

    버킷이 테넌트 내에 있는 경우 테넌트도 지정합니다.

    구문

    radosgw-admin bucket link --bucket=tenant/ORIGINAL_NAME --bucket-new-name=NEW_NAME --uid=TENANT$USER_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --bucket=test/s3bucket1 --bucket-new-name=s3newb --uid=test$testuser
    Copy to Clipboard Toggle word wrap

  3. 버킷의 이름이 변경되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list
    [
        "34150b2e9174475db8e191c188e920f6/swcontainer",
        "34150b2e9174475db8e191c188e920f6/swimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/ec2container",
        "s3newb",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten1",
        "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct",
        "c278edd68cfb4705bb3e07837c7ad1a8/demopostup",
        "34150b2e9174475db8e191c188e920f6/postimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten2",
        "c278edd68cfb4705bb3e07837c7ad1a8/postupsw"
    ]
    Copy to Clipboard Toggle word wrap

9.7.2. 버킷 제거

Ceph Object Gateway 구성을 사용하여 Red Hat Ceph Storage 클러스터에서 버킷을 제거합니다.

버킷에 오브젝트가 없는 경우 radosgw-admin bucket rm 명령을 실행할 수 있습니다. 버킷에 오브젝트가 있는 경우 --purge-objects 옵션을 사용할 수 있습니다.

다중 사이트 구성의 경우 Red Hat은 기본 사이트에서 버킷을 삭제하는 것이 좋습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.
  • 기존 버킷입니다.

프로세스

  1. 버킷을 나열합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list
    [
        "34150b2e9174475db8e191c188e920f6/swcontainer",
        "s3bucket1",
        "34150b2e9174475db8e191c188e920f6/swimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/ec2container",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten1",
        "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct",
        "c278edd68cfb4705bb3e07837c7ad1a8/demopostup",
        "34150b2e9174475db8e191c188e920f6/postimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten2",
        "c278edd68cfb4705bb3e07837c7ad1a8/postupsw"
    ]
    Copy to Clipboard Toggle word wrap

  2. 버킷을 제거합니다.

    구문

    radosgw-admin bucket rm --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket rm --bucket=s3bucket1
    Copy to Clipboard Toggle word wrap

  3. 버킷에 오브젝트가 있는 경우 다음 명령을 실행합니다.

    구문

    radosgw-admin bucket rm --bucket=BUCKET --purge-objects --bypass-gc
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket rm --bucket=s3bucket1 --purge-objects --bypass-gc
    Copy to Clipboard Toggle word wrap

    --purge-objects 옵션은 objects를 제거하고 --bypass-gc 옵션은 가비지 수집기 없이 오브젝트 삭제를 트리거하여 프로세스를 보다 효율적으로 만듭니다.

  4. 버킷이 제거되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list
    [
        "34150b2e9174475db8e191c188e920f6/swcontainer",
        "34150b2e9174475db8e191c188e920f6/swimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/ec2container",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten1",
        "c278edd68cfb4705bb3e07837c7ad1a8/demo-ct",
        "c278edd68cfb4705bb3e07837c7ad1a8/demopostup",
        "34150b2e9174475db8e191c188e920f6/postimpfalse",
        "c278edd68cfb4705bb3e07837c7ad1a8/demoten2",
        "c278edd68cfb4705bb3e07837c7ad1a8/postupsw"
    ]
    Copy to Clipboard Toggle word wrap

9.7.3. 버킷 이동

radosgw-admin 버킷 유틸리티는 사용자 간에 버킷을 이동하는 기능을 제공합니다. 이렇게 하려면 버킷을 새 사용자에게 연결하고 버킷의 소유권을 새 사용자로 변경합니다.

버킷을 이동할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있습니다.
  • S3 버킷입니다.
  • 테넌트 및 테넌트가 아닌 다양한 사용자.
9.7.3.1. 테넌트가 아닌 사용자 간에 버킷 이동

radosgw-admin 버킷 chown 명령은 버킷과 포함된 모든 오브젝트의 소유권을 한 사용자의 다른 사용자로 변경할 수 있는 기능을 제공합니다. 이를 수행하려면 현재 사용자의 버킷을 연결 해제하고 새 사용자에게 연결한 다음 버킷의 소유권을 새 사용자로 변경합니다.

프로세스

  1. 버킷을 새 사용자에게 연결합니다.

    구문

    radosgw-admin bucket link --uid=USER --bucket=BUCKET
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --uid=user2 --bucket=data
    Copy to Clipboard Toggle word wrap

  2. 버킷이 user2 에 성공적으로 연결되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --uid=user2
    [
        "data"
    ]
    Copy to Clipboard Toggle word wrap

  3. 버킷의 소유권을 새 사용자로 변경합니다.

    구문

    radosgw-admin bucket chown --uid=user --bucket=bucket
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket chown --uid=user2 --bucket=data
    Copy to Clipboard Toggle word wrap

  4. 다음 명령의 출력에서 owner 행을 확인하여 데이터 버킷의 소유권이 성공적으로 변경되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --bucket=data
    Copy to Clipboard Toggle word wrap

9.7.3.2. 테넌트 사용자 간에 버킷 이동

테넌트된 사용자와 다른 사용자 간에 버킷을 이동할 수 있습니다.

프로세스

  1. 버킷을 새 사용자에게 연결합니다.

    구문

    radosgw-admin bucket link --bucket=CURRENT_TENANT/BUCKET --uid=NEW_TENANT$USER
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --bucket=test/data --uid=test2$user2
    Copy to Clipboard Toggle word wrap

  2. 버킷이 user2 에 성공적으로 연결되었는지 확인합니다.

    [ceph: root@host01 /]# radosgw-admin bucket list --uid=test$user2
    [
        "data"
    ]
    Copy to Clipboard Toggle word wrap
  3. 버킷의 소유권을 새 사용자로 변경합니다.

    구문

    radosgw-admin bucket chown --bucket=NEW_TENANT/BUCKET --uid=NEW_TENANT$USER
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket chown --bucket='test2/data' --uid='test$tuser2'
    Copy to Clipboard Toggle word wrap

  4. 다음 명령의 출력에서 owner 행을 확인하여 데이터 버킷의 소유권이 성공적으로 변경되었는지 확인합니다.

    [ceph: root@host01 /]# radosgw-admin bucket list --bucket=test2/data
    Copy to Clipboard Toggle word wrap
9.7.3.3. 테넌트가 아닌 사용자의 버킷을 테넌트 사용자로 이동

테넌트가 아닌 사용자의 버킷을 테넌트 사용자로 이동할 수 있습니다.

프로세스

  1. 선택 사항: 테넌트가 여러 개 없는 경우 rgw_keystone_implicit_tenants 를 활성화하고 외부 테넌트에서 Ceph Object Gateway에 액세스하여 생성할 수 있습니다.

    rgw_keystone_implicit_tenants 옵션을 활성화합니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_keystone_implicit_tenants true
    Copy to Clipboard Toggle word wrap

    s3cmd 또는 swift 명령을 사용하여 테넌트에서 Ceph Object Gateway에 액세스합니다.

    예제

    [ceph: root@host01 /]# swift list
    Copy to Clipboard Toggle word wrap

    또는 s3cmd 를 사용하십시오.

    예제

    [ceph: root@host01 /]# s3cmd ls
    Copy to Clipboard Toggle word wrap

    외부 테넌트에서 첫 번째 액세스 권한은 동일한 Ceph Object Gateway 사용자를 생성합니다.

  2. 버킷을 테넌트 사용자로 이동합니다.

    구문

    radosgw-admin bucket link --bucket=/BUCKET --uid='TENANT$USER'
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket link --bucket=/data --uid='test$tenanted-user'
    Copy to Clipboard Toggle word wrap

  3. 데이터 버킷이 tenanted-user 에 성공적으로 연결되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --uid='test$tenanted-user'
    [
        "data"
    ]
    Copy to Clipboard Toggle word wrap

  4. 버킷의 소유권을 새 사용자로 변경합니다.

    구문

    radosgw-admin bucket chown --bucket='tenant/bucket name' --uid='tenant$user'
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin bucket chown --bucket='test/data' --uid='test$tenanted-user'
    Copy to Clipboard Toggle word wrap

  5. 다음 명령의 출력에서 owner 행을 확인하여 데이터 버킷의 소유권이 성공적으로 변경되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --bucket=test/data
    Copy to Clipboard Toggle word wrap

9.7.3.4. 고립 및 누출 오브젝트 찾기

정상적인 스토리지 클러스터에는 고립되거나 누출된 오브젝트가 없지만 경우에 따라 고립되거나 누출된 오브젝트가 발생할 수 있습니다.

스토리지 클러스터에 고립된 오브젝트가 있으며 RADOS 오브젝트와 연결된 오브젝트 ID가 있습니다. 그러나 버킷 인덱스 참조에 S3 개체가 있는 RADOS 오브젝트에 대한 참조는 없습니다. 예를 들어 작업 중간에 Ceph Object Gateway가 다운되면 일부 개체가 고립될 수 있습니다. 또한 발견되지 않은 버그로 인해 고립된 오브젝트가 발생할 수 있습니다.

Ceph Object Gateway 오브젝트가 RADOS 오브젝트에 매핑되는 방법을 확인할 수 있습니다. radosgw-admin 명령은 이러한 잠재적인 고립 또는 누출 오브젝트 목록을 검색하고 생성하는 툴을 제공합니다. radoslist 하위 명령을 사용하면 버킷 또는 스토리지 클러스터의 모든 버킷에 저장된 오브젝트가 표시됩니다. rgw-orphan-list 스크립트는 풀 내에 고립된 오브젝트를 표시합니다.

참고

radoslist 하위 명령은 더 이상 사용되지 않는 orphans findorphans finish 하위 명령을 대체합니다.

중요

모든 오브젝트가 고립된 상태로 표시될 때 Indexless 버킷이 사용 중인 이 명령을 사용하지 마십시오.

고립된 오브젝트를 식별하는 또 다른 방법은 rados -p <pool> ls | grep BUCKET_ID 명령을 실행하는 것입니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 실행 중인 Ceph Object Gateway입니다.

프로세스

  1. 버킷 내에 데이터를 보관하는 오브젝트 목록을 생성합니다.

    구문

    radosgw-admin bucket radoslist --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# radosgw-admin bucket radoslist --bucket mybucket
    Copy to Clipboard Toggle word wrap

    참고

    BUCKET_NAME 을 생략하면 모든 버킷의 모든 오브젝트가 표시됩니다.

  2. rgw-orphan-list 의 버전을 확인합니다.

    예제

    [root@host01 ~]# head /usr/bin/rgw-orphan-list
    Copy to Clipboard Toggle word wrap

    버전은 2023-01-11 이상이어야 합니다.

  3. 고립 목록을 생성해야 하는 디렉토리를 만듭니다.

    예제

    [root@host01 ~]# mkdir orphans
    Copy to Clipboard Toggle word wrap

  4. 이전에 만든 디렉터리로 이동합니다.

    예제

    [root@host01 ~]# cd orphans
    Copy to Clipboard Toggle word wrap

  5. 풀 목록에서 고립을 찾을 풀을 선택합니다. 이 스크립트는 클러스터의 오브젝트에 따라 오랫동안 실행될 수 있습니다.

    예제

    [root@host01 orphans]# rgw-orphan-list
    Copy to Clipboard Toggle word wrap

    예제

    Available pools:
        .rgw.root
        default.rgw.control
        default.rgw.meta
        default.rgw.log
        default.rgw.buckets.index
        default.rgw.buckets.data
        rbd
        default.rgw.buckets.non-ec
        ma.rgw.control
        ma.rgw.meta
        ma.rgw.log
        ma.rgw.buckets.index
        ma.rgw.buckets.data
        ma.rgw.buckets.non-ec
    Which pool do you want to search for orphans?
    Copy to Clipboard Toggle word wrap

    고립을 검색할 풀 이름을 입력합니다.

    중요

    메타데이터 풀이 아닌 rgw-orphan-list 명령을 사용할 때 데이터 풀을 지정해야 합니다.

  6. rgw-orphan-list 툴 사용량의 세부 정보를 확인합니다.

    Synatx

    rgw-orphan-list -h
    rgw-orphan-list POOL_NAME /DIRECTORY
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 orphans]# rgw-orphan-list default.rgw.buckets.data /orphans
    
    2023-09-12 08:41:14 ceph-host01 Computing delta...
    2023-09-12 08:41:14 ceph-host01 Computing results...
    10 potential orphans found out of a possible 2412 (0%).         <<<<<<< orphans detected
    The results can be found in './orphan-list-20230912124113.out'.
        Intermediate files are './rados-20230912124113.intermediate' and './radosgw-admin-20230912124113.intermediate'.
    ***
    *** WARNING: This is EXPERIMENTAL code and the results should be used
    ***          only with CAUTION!
    ***
    Done at 2023-09-12 08:41:14.
    Copy to Clipboard Toggle word wrap

  7. ls -l 명령을 실행하여 오류로 끝나는 파일이 문제 없이 실행되었음을 나타내는 0 길이여야 하는지 확인합니다.

    예제

    [root@host01 orphans]# ls -l
    
    -rw-r--r--. 1 root root    770 Sep 12 03:59 orphan-list-20230912075939.out
    -rw-r--r--. 1 root root      0 Sep 12 03:59 rados-20230912075939.error
    -rw-r--r--. 1 root root 248508 Sep 12 03:59 rados-20230912075939.intermediate
    -rw-r--r--. 1 root root      0 Sep 12 03:59 rados-20230912075939.issues
    -rw-r--r--. 1 root root      0 Sep 12 03:59 radosgw-admin-20230912075939.error
    -rw-r--r--. 1 root root 247738 Sep 12 03:59 radosgw-admin-20230912075939.intermediate
    Copy to Clipboard Toggle word wrap

  8. 나열된 고립 오브젝트를 검토합니다.

    예제

    [root@host01 orphans]# cat ./orphan-list-20230912124113.out
    
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.0
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.1
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.2
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.3
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.4
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.5
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.6
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.7
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.8
    a9c042bc-be24-412c-9052-dda6b2f01f55.16749.1_key1.cherylf.433-bucky-4865-0.9
    Copy to Clipboard Toggle word wrap

  9. 고립 오브젝트를 제거합니다.

    구문

    rados -p POOL_NAME rm OBJECT_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 orphans]# rados -p default.rgw.buckets.data rm myobject
    Copy to Clipboard Toggle word wrap

    주의

    올바른 오브젝트를 제거 중인지 확인합니다. rados rm 명령을 실행하면 스토리지 클러스터에서 데이터가 제거됩니다.

9.7.3.5. 버킷 인덱스 항목 관리

radosgw-admin 버킷 검사 하위 명령을 사용하여 Red Hat Ceph Storage 클러스터에서 Ceph Object Gateway의 버킷 인덱스 항목을 관리할 수 있습니다.

multipart 업로드 오브젝트 조각과 관련된 각 버킷 인덱스 항목은 해당 .meta 인덱스 항목과 일치합니다. 지정된 다중 파트 업로드에 대해 하나의 .meta 항목이 있어야 합니다. 조각에 대한 해당 .meta 항목을 찾지 못하면 출력의 섹션에 "orphaned" 조각 항목이 나열됩니다.

버킷의 통계는 버킷 인덱스 헤더에 저장됩니다. 이 단계에서는 해당 헤더를 로드하고 버킷 인덱스의 모든 일반 오브젝트 항목을 반복하고 통계를 다시 계산합니다. 그런 다음 "existing_header" 및 "calculated_header"라는 섹션에 실제 및 계산된 통계를 각각 표시하여 비교할 수 있습니다.

버킷 검사 하위 명령과 함께 --fix 옵션을 사용하는 경우 버킷 인덱스에서 "orphaned" 항목을 제거하고 계산된 헤더의 기존 통계도 덮어씁니다. 이 경우 버전 관리에 사용되는 여러 항목을 포함한 모든 항목이 출력에 나열됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 실행 중인 Ceph Object Gateway입니다.
  • 새로 생성된 버킷입니다.

프로세스

  1. 특정 버킷의 버킷 인덱스를 확인합니다.

    구문

    radosgw-admin bucket check --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@rgw ~]# radosgw-admin bucket check --bucket=mybucket
    Copy to Clipboard Toggle word wrap

  2. 분리된 오브젝트 제거를 포함하여 버킷 인덱스의 불일치를 수정합니다.

    구문

    radosgw-admin bucket check --fix --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@rgw ~]# radosgw-admin bucket check --fix --bucket=mybucket
    Copy to Clipboard Toggle word wrap

9.7.3.6. 버킷 알림

버킷 알림은 버킷에서 특정 이벤트가 발생할 때 Ceph Object Gateway에서 정보를 보내는 방법을 제공합니다. 버킷 알림은 HTTP, AMQP0.9.1 및 Kafka 끝점으로 보낼 수 있습니다. 특정 버킷 및 특정 주제의 이벤트에 대한 버킷 알림을 보내려면 알림 항목을 생성해야 합니다. 버킷 알림은 이벤트 유형의 서브 세트에서 또는 기본적으로 모든 이벤트 유형에 대해 생성할 수 있습니다. 버킷 알림은 키 접두사 또는 접미사, 키와 일치하는 정규식, 오브젝트에 연결된 메타데이터 속성 또는 오브젝트 태그를 기반으로 이벤트를 필터링할 수 있습니다. 버킷 알림에는 버킷 알림 메커니즘에 대한 구성 및 제어 인터페이스를 제공하는 REST API가 있습니다.

참고

버킷 알림 API는 기본적으로 활성화되어 있습니다. rgw_enable_apis 구성 매개 변수가 명시적으로 설정된 경우 s3알림이 포함되어 있는지 확인합니다. 이를 확인하려면 ceph --admin-daemon /var/run/ceph/ceph-client.rgw.NAME.asok config get rgw_enable_apis 명령을 실행합니다. NAME 을 Ceph Object Gateway 인스턴스 이름으로 바꿉니다.

CLI를 사용한 주제 관리

Ceph Object Gateway 버킷에 대한 목록, 가져오기 및 제거를 관리할 수 있습니다.

  • 항목 나열: 다음 명령을 실행하여 모든 주제의 구성을 나열합니다.

    예제

    [ceph: host01 /]# radosgw-admin topic list
    Copy to Clipboard Toggle word wrap

  • 주제 가져오기: 다음 명령을 실행하여 특정 주제의 구성을 가져옵니다.

    예제

    [ceph: host01 /]# radosgw-admin topic get --topic=topic1
    Copy to Clipboard Toggle word wrap

  • Remove topics: 다음 명령을 실행하여 특정 주제의 구성을 제거합니다.

    예제

    [ceph: host01 /]# radosgw-admin topic rm --topic=topic1
    Copy to Clipboard Toggle word wrap

    참고

    Ceph Object Gateway 버킷이 해당 주제로 구성된 경우에도 항목이 제거됩니다.

9.7.3.7. 버킷 알림 생성

버킷 수준에서 버킷 알림을 생성합니다. 알림 구성에는 Red Hat Ceph Storage Object Gateway S3 이벤트, ObjectCreated,ObjectRemoved, ObjectLifecycle:Expiration 이 있습니다. 버킷 알림을 보내려면 대상과 게시해야 합니다. 버킷 알림은 S3 작업입니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 실행 중인 HTTP 서버, RabbitMQ 서버 또는 Kafka 서버.
  • 루트 수준 액세스.
  • Red Hat Ceph Storage Object Gateway 설치
  • 사용자 액세스 키 및 시크릿 키.
  • 엔드포인트 매개 변수.
중요

Red Hat은 put,post,multipartUpload 와 같은 ObjectCreate 이벤트를 지원합니다. Red Hat은 object_deletes3_multi_object_delete 와 같은 ObjectRemove 이벤트도 지원합니다.

프로세스

  1. S3 버킷을 생성합니다.
  2. http,amqp 또는 kafka 프로토콜에 대한 Cryostat 주제를 만듭니다.
  3. s3:objectCreate,s3:objectRemove, s3:ObjectLifecycle:Expiration 이벤트에 대한 S3 버킷 알림을 생성합니다.

    예제

    client.put_bucket_notification_configuration(
       Bucket=bucket_name,
       NotificationConfiguration={
           'TopicConfigurations': [
               {
                   'Id': notification_name,
                   'TopicArn': topic_arn,
                   'Events': ['s3:ObjectCreated:*', 's3:ObjectRemoved:*', 's3:ObjectLifecycle:Expiration:*']
               }]})
    Copy to Clipboard Toggle word wrap

  4. 버킷에 S3 오브젝트를 생성합니다.
  5. http,rabbitmq 또는 kafka 수신자에서 오브젝트 생성 이벤트를 확인합니다.
  6. 오브젝트를 삭제합니다.
  7. http,rabbitmq 또는 kafka 수신자에서 오브젝트 삭제 이벤트를 확인합니다.

9.7.4. S3 버킷 복제 API

S3 버킷 복제 API가 구현되고 사용자가 다양한 버킷 간에 복제 규칙을 생성할 수 있습니다. AWS 복제 기능은 동일한 영역 내에서 버킷 복제를 허용하지만 Ceph Object Gateway에서는 현재 이를 허용하지 않습니다. 그러나 Ceph Object Gateway API에는 사용자가 특정 버킷을 동기화할 영역을 선택할 수 있는 Zone 배열도 추가되었습니다.

9.7.4.1. S3 버킷 복제 생성

버킷에 대한 복제 구성을 생성하거나 기존 구성을 교체합니다.

복제 구성에는 하나 이상의 규칙이 포함되어야 합니다. 각 규칙은 소스 버킷의 오브젝트를 필터링하여 복제할 오브젝트 서브 세트를 식별합니다.

참고

S3 복제를 사용하여 버킷 수준 정책을 생성한 경우 기본적으로 파이프 구성은 사용자 모드를 사용자 대상 매개변수로 설정합니다. 대상 매개 변수에 대한 자세한 내용은 대상 매개변수: 사용자 모드를 참조하십시오.

사전 요구 사항

  • 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
  • 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.

프로세스

  1. 복제의 세부 정보가 포함된 복제 구성 파일을 만듭니다.

    구문

    {
    "Role": "arn:aws:iam::account-id:role/role-name",
        "Rules": [
            {
                "ID": "String",
                "Status": "Enabled",
                "Priority": 1,
                "DeleteMarkerReplication": { "Status": "Enabled"|"Disabled" },
                "Destination": {
                    "Bucket": "BUCKET_NAME"
                }
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cat replication.json
    {
        "Role": "arn:aws:iam::account-id:role/role-name",
        "Rules": [
            {
                "ID": "pipe-bkt",
                "Status": "Enabled",
                "Priority": 1,
                "DeleteMarkerReplication": { "Status": "Disabled" },
                "Destination": {
                    "Bucket": "testbucket"
                }
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

  2. S3 API put bucket 복제를 생성합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL s3api put-bucket-replication --bucket BUCKET_NAME --replication-configuration file://REPLICATION_CONFIIRATION_FILE.json
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# aws --endpoint-url=http://host01:80 s3api put-bucket-replication --bucket testbucket --replication-configuration file://replication.json
    Copy to Clipboard Toggle word wrap

검증

  1. 동기화 정책 get 명령을 사용하여 동기화 정책을 확인합니다.

    구문

    radosgw-admin sync policy get --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    참고

    복제 정책을 적용할 때 규칙은 파이프 라고 하는 sync-policy 규칙으로 변환되며 활성화 및 비활성화 됨으로 분류됩니다.

    • enabled: 이 파이프는 활성화되고 활성 상태이며 그룹 상태는 'rgw_sync_policy_group:STATUS'로 설정됩니다. 예를 들어s3-bucket-replication:enabled.
    • disabled: 이 세트의 파이프는 활성 상태가 아니며 그룹 상태는 'rgw_sync_policy_group:STATUS'로 설정됩니다. 예를 들어 s3-bucket-replication:disabled.

    복제 정책의 일부로 구성할 수 있는 규칙이 여러 개 있을 수 있으므로 각 그룹의 정확한 매핑을 위해 두 개의 개별 그룹('enabled' 및 '허용됨' 상태의 다른 그룹)이 있습니다.

    예제

    [ceph: root@host01 /]# radosgw-admin sync policy get --bucket testbucket
    {
        "groups": [
            {
                "id": "s3-bucket-replication:disabled",
                "data_flow": {},
                "pipes": [],
                "status": "allowed"
            },
            {
                "id": "s3-bucket-replication:enabled",
                "data_flow": {},
                "pipes": [
                    {
                        "id": "",
                        "source": {
                            "bucket": "*",
                            "zones": [
                                "*"
                            ]
                        },
                        "dest": {
                            "bucket": "testbucket",
                            "zones": [
                                "*"
                            ]
                        },
                        "params": {
                            "source": {},
                            "dest": {},
                            "priority": 1,
                            "mode": "user",
                            "user": "s3cmd"
                        }
                    }
                ],
                "status": "enabled"
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

9.7.4.2. S3 버킷 복제 가져오기

버킷의 복제 구성을 검색할 수 있습니다.

사전 요구 사항

  • 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
  • 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.
  • S3 버킷 복제가 생성되었습니다. 자세한 내용은 S3 버킷 복제 API 를 참조하십시오.

프로세스

  • S3 API put 버킷 복제를 가져옵니다.

    구문

    aws s3api get-bucket-replication --bucket BUCKET_NAME --endpoint-url=RADOSGW_ENDPOINT_URL
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# aws s3api get-bucket-replication --bucket testbucket --endpoint-url=http://host01:80
    {
    
    "ReplicationConfiguration": {
        "Role": "",
        "Rules": [
            {
                "ID": "pipe-bkt",
                "Status": "Enabled",
                "Priority": 1,
                "Destination": {
                    Bucket": "testbucket"
                }
            }
        ]
      }
    
    }
    Copy to Clipboard Toggle word wrap

9.7.4.3. S3 버킷 복제 삭제

버킷에서 복제 구성을 삭제합니다.

버킷 소유자는 다른 사용자에게 복제 구성을 제거할 수 있는 권한을 부여할 수 있습니다.

사전 요구 사항

  • 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
  • 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.
  • S3 버킷 복제가 생성되었습니다. 자세한 내용은 S3 버킷 복제 API 를 참조하십시오.

프로세스

  1. S3 API put 버킷 복제를 삭제합니다.

    구문

    aws s3api delete-bucket-replication --bucket BUCKET_NAME --endpoint-url=RADOSGW_ENDPOINT_URL
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# aws s3api delete-bucket-replication --bucket testbucket --endpoint-url=http://host01:80
    Copy to Clipboard Toggle word wrap

검증

  • 기존 복제 규칙이 삭제되었는지 확인합니다.

    구문

    radosgw-admin sync policy get --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin sync policy get --bucket=testbucket
    Copy to Clipboard Toggle word wrap

9.7.4.4. 사용자의 S3 버킷 복제 비활성화

관리자는 다른 사용자가 해당 특정 사용자/사용자 아래에 있는 버킷에서 s3 복제 API 작업 수행을 제한하도록 사용자 정책을 설정할 수 있습니다.

사전 요구 사항

  • 다중 사이트 Ceph 개체 게이트웨이가 구성된 실행 중인 Red Hat Ceph Storage 클러스터입니다. 다중 사이트 동기화 정책 생성에 대한 자세한 내용은 동기화 정책 그룹 생성을 참조하십시오.
  • 영역 그룹 수준 정책이 생성되었습니다. 영역 그룹 정책 생성에 대한 자세한 내용은 Bucket 세분화된 동기화 정책을 참조하십시오.

프로세스

  1. S3 버킷 복제 API에 대한 액세스를 거부하려면 사용자 정책 구성 파일을 생성합니다.

    예제

    [root@host01 ~]# cat user_policy.json
    {
    	"Version":"2012-10-17",
    	"Statement":
    	{
    		"Effect":"Deny",
    		"Action":
    		[
    			"s3:PutReplicationConfiguration",
    			"s3:GetReplicationConfiguration",
    			"s3:DeleteReplicationConfiguration"
    		],
    		"Resource": "arn:aws:s3:::*",
    	}
    }
    Copy to Clipboard Toggle word wrap

  2. 관리자 권한으로 S3 API에 대한 사용자 액세스를 비활성화하려면 사용자 정책을 user로 설정합니다.

    구문

    aws --endpoint-url=ENDPOINT_URL iam put-user-policy --user-name USER_NAME --policy-name USER_POLICY_NAME --policy-document POLICY_DOCUMENT_PATH
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# aws --endpoint-url=http://host01:80 iam put-user-policy --user-name newuser1 --policy-name userpolicy --policy-document file://user_policy.json
    Copy to Clipboard Toggle word wrap

검증

  • 관리자로서 사용자 정책이 설정되었는지 확인합니다.

    구문

    aws --endpoint-url=ENDPOINT_URL iam get-user-policy --user-name USER_NAME --policy-name USER_POLICY_NAME --region us
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# aws --endpoint-url=http://host01:80 iam get-user-policy --user-name newuser1 --policy-name userpolicy --region us
    Copy to Clipboard Toggle word wrap

  • admin 사용자가 사용자 정책을 설정하는 사용자로 S3 버킷 복제 API 작업 아래 작업을 수행하여 작업이 예상대로 거부되는지 확인합니다.

9.8. 버킷 라이프사이클

스토리지 관리자는 버킷 라이프사이클 구성을 사용하여 오브젝트를 관리하여 수명 동안 효과적으로 저장할 수 있습니다. 예를 들어 사용 사례에 따라 더 저렴한 스토리지 클래스, 아카이브로 오브젝트를 전환하거나 삭제할 수 있습니다.

RADOS 게이트웨이는 버킷 오브젝트 세트에 정의된 규칙을 사용하여 S3 API 오브젝트 만료를 지원합니다. 각 규칙에는 오브젝트를 선택하는 접두사와 오브젝트를 사용할 수 없게 되는 일 수가 있습니다.

참고

radosgw-admin lc reshard 명령은 Red Hat Ceph Storage 3.3에서 더 이상 사용되지 않으며 Red Hat Ceph Storage 4 이상 릴리스에서 지원되지 않습니다.

9.8.1. 라이프사이클 관리 정책 생성

radosgw-admin 명령을 사용하는 대신 표준 S3 작업을 사용하여 버킷 라이프사이클 정책 구성을 관리할 수 있습니다. RADOS 게이트웨이는 버킷에 적용된 Amazon S3 API 정책 언어의 하위 집합만 지원합니다. 라이프사이클 구성에는 버킷 오브젝트 세트에 대해 정의된 하나 이상의 규칙이 포함됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Storage 클러스터입니다.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 사용자 액세스 권한이 있는 S3 사용자
  • AWS CLI 패키지가 설치된 Ceph Object Gateway 클라이언트에 액세스할 수 있습니다.

프로세스

  1. 라이프사이클 구성에 사용할 JSON 파일을 생성합니다.

    예제

    [user@client ~]$ vi lifecycle.json
    Copy to Clipboard Toggle word wrap

  2. 파일에 특정 라이프사이클 구성 규칙을 추가합니다.

    예제

    {
    	"Rules": [
            {
    		    "Filter": {
    			    "Prefix": "images/"
    		    },
    		    "Status": "Enabled",
    		    "Expiration": {
    			    "Days": 1
    		    },
    		    "ID": "ImageExpiration"
    	    }
        ]
    }
    Copy to Clipboard Toggle word wrap

    라이프사이클 구성 예제에서는 1일 후에 images 디렉토리에서 오브젝트를 만료합니다.

  3. 버킷에서 라이프사이클 구성을 설정합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api put-bucket-lifecycle-configuration --bucket BUCKET_NAME --lifecycle-configuration file://PATH_TO_LIFECYCLE_CONFIGURATION_FILE/LIFECYCLE_CONFIGURATION_FILE.json
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$ aws --endpoint-url=http://host01:80 s3api put-bucket-lifecycle-configuration --bucket testbucket --lifecycle-configuration file://lifecycle.json
    Copy to Clipboard Toggle word wrap

    이 예에서는 lifecycle.json 파일이 현재 디렉터리에 있습니다.

검증

  • 버킷의 라이프사이클 구성을 검색합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api get-bucket-lifecycle-configuration --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$ aws --endpoint-url=http://host01:80 s3api get-bucket-lifecycle-configuration --bucket testbucket
    {
    	"Rules": [
            {
    		    "Expiration": {
    			    "Days": 1
    		    },
    		    "ID": "ImageExpiration",
    		    "Filter": {
    			    "Prefix": "images/"
    		    },
    		    "Status": "Enabled"
    	    }
        ]
    }
    Copy to Clipboard Toggle word wrap

  • 선택 사항: Ceph Object Gateway 노드에서 Cephadm 쉘에 로그인하고 버킷 라이프사이클 구성을 검색합니다.

    구문

    radosgw-admin lc get --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin lc get --bucket=testbucket
    {
    	"prefix_map": {
    		"images/": {
    			"status": true,
    			"dm_expiration": false,
    			"expiration": 1,
    			"noncur_expiration": 0,
    			"mp_expiration": 0,
    			"transitions": {},
    			"noncur_transitions": {}
    		}
    	},
    	"rule_map": [
            {
    		"id": "ImageExpiration",
    		"rule": {
    			"id": "ImageExpiration",
    			"prefix": "",
    			"status": "Enabled",
    			"expiration": {
    				"days": "1",
    				"date": ""
    			},
    			"mp_expiration": {
    				"days": "",
    				"date": ""
    			},
    			"filter": {
    				"prefix": "images/",
    				"obj_tags": {
    					"tagset": {}
    				}
    			},
    			"transitions": {},
    			"noncur_transitions": {},
    			"dm_expiration": false
    		}
    	}
      ]
    }
    Copy to Clipboard Toggle word wrap

9.8.2. 라이프사이클 관리 정책 삭제

s3api delete-bucket-lifecycle 명령을 사용하여 지정된 버킷의 라이프사이클 관리 정책을 삭제할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Storage 클러스터입니다.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 사용자 액세스 권한이 있는 S3 사용자
  • AWS CLI 패키지가 설치된 Ceph Object Gateway 클라이언트에 액세스할 수 있습니다.

프로세스

  • 라이프사이클 구성을 삭제합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api delete-bucket-lifecycle --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$ aws --endpoint-url=http://host01:80 s3api delete-bucket-lifecycle --bucket testbucket
    Copy to Clipboard Toggle word wrap

검증

  • 버킷의 라이프사이클 구성을 검색합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api get-bucket-lifecycle-configuration --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]# aws --endpoint-url=http://host01:80  s3api get-bucket-lifecycle-configuration --bucket testbucket
    Copy to Clipboard Toggle word wrap

  • 선택 사항: Ceph Object Gateway 노드에서 버킷 라이프사이클 구성을 검색합니다.

    구문

    radosgw-admin lc get --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin lc get --bucket=testbucket
    Copy to Clipboard Toggle word wrap

    참고

    버킷 라이프사이클 정책이 없는 경우 명령에서 정보를 반환하지 않습니다.

9.8.3. 라이프사이클 관리 정책 업데이트

s3cmd put-bucket-lifecycle-configuration 명령을 사용하여 라이프사이클 관리 정책을 업데이트할 수 있습니다.

참고

put-bucket-lifecycle-configuration 은 기존 버킷 라이프사이클 구성을 덮어씁니다. 현재 라이프사이클 정책 설정을 유지하려면 라이프사이클 구성 파일에 해당 설정을 포함해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Storage 클러스터입니다.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • S3 버킷이 생성되었습니다.
  • 사용자 액세스 권한이 있는 S3 사용자
  • AWS CLI 패키지가 설치된 Ceph Object Gateway 클라이언트에 액세스할 수 있습니다.

프로세스

  1. 라이프사이클 구성에 대한 JSON 파일을 생성합니다.

    예제

    [user@client ~]$ vi lifecycle.json
    Copy to Clipboard Toggle word wrap

  2. 파일에 특정 라이프사이클 구성 규칙을 추가합니다.

    예제

    {
    	"Rules": [
            {
    		    "Filter": {
    			    "Prefix": "images/"
    		    },
    		    "Status": "Enabled",
    		    "Expiration": {
    			    "Days": 1
    		    },
    		    "ID": "ImageExpiration"
    	    },
    		{
    			"Filter": {
    				"Prefix": "docs/"
    			},
    			"Status": "Enabled",
    			"Expiration": {
    				"Days": 30
    			},
    			"ID": "DocsExpiration"
    		}
    	]
    }
    Copy to Clipboard Toggle word wrap

  3. 버킷에서 라이프사이클 구성을 업데이트합니다.

    구문

    aws --endpoint-url=RADOSGW_ENDPOINT_URL:PORT s3api put-bucket-lifecycle-configuration --bucket BUCKET_NAME --lifecycle-configuration file://PATH_TO_LIFECYCLE_CONFIGURATION_FILE/LIFECYCLE_CONFIGURATION_FILE.json
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$ aws --endpoint-url=http://host01:80 s3api put-bucket-lifecycle-configuration --bucket testbucket --lifecycle-configuration file://lifecycle.json
    Copy to Clipboard Toggle word wrap

검증

  • 버킷의 라이프사이클 구성을 검색합니다.

    구문

    aws --endpointurl=RADOSGW_ENDPOINT_URL:PORT s3api get-bucket-lifecycle-configuration --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [user@client ~]$ aws -endpoint-url=http://host01:80 s3api get-bucket-lifecycle-configuration --bucket testbucket
    
    {
        "Rules": [
            {
                "Expiration": {
                    "Days": 30
                },
                "ID": "DocsExpiration",
                "Filter": {
                    "Prefix": "docs/"
                },
                "Status": "Enabled"
            },
            {
                "Expiration": {
                    "Days": 1
                },
                "ID": "ImageExpiration",
                "Filter": {
                    "Prefix": "images/"
                },
                "Status": "Enabled"
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

  • 선택 사항: Ceph Object Gateway 노드에서 Cephadm 쉘에 로그인하고 버킷 라이프사이클 구성을 검색합니다.

    구문

    radosgw-admin lc get --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin lc get --bucket=testbucket
    {
    	"prefix_map": {
            "docs/": {
    			"status": true,
    			"dm_expiration": false,
    			"expiration": 1,
    			"noncur_expiration": 0,
    			"mp_expiration": 0,
    			"transitions": {},
    			"noncur_transitions": {}
    		},
    		"images/": {
    			"status": true,
    			"dm_expiration": false,
    			"expiration": 1,
    			"noncur_expiration": 0,
    			"mp_expiration": 0,
    			"transitions": {},
    			"noncur_transitions": {}
    		}
    	},
    	"rule_map": [
            {
            "id": "DocsExpiration",
        	"rule": {
        		"id": "DocsExpiration",
        		"prefix": "",
        		"status": "Enabled",
        		"expiration": {
        			"days": "30",
        			"date": ""
        		},
                "noncur_expiration": {
                    "days": "",
                    "date": ""
                },
        		"mp_expiration": {
        			"days": "",
        			"date": ""
        		},
        		"filter": {
        			"prefix": "docs/",
        			"obj_tags": {
        				"tagset": {}
        			}
        		},
        		"transitions": {},
        		"noncur_transitions": {},
        		"dm_expiration": false
        	}
        },
        {
    		"id": "ImageExpiration",
    		"rule": {
    			"id": "ImageExpiration",
    			"prefix": "",
    			"status": "Enabled",
    			"expiration": {
    				"days": "1",
    				"date": ""
    			},
    			"mp_expiration": {
    				"days": "",
    				"date": ""
    			},
    			"filter": {
    				"prefix": "images/",
    				"obj_tags": {
    					"tagset": {}
    				}
    			},
    			"transitions": {},
    			"noncur_transitions": {},
    			"dm_expiration": false
    		}
    	}
      ]
    }
    Copy to Clipboard Toggle word wrap

9.8.4. 버킷 라이프사이클 모니터링

라이프사이클 처리를 모니터링하고 radosgw-admin lc listradosgw-admin lc process 명령을 사용하여 버킷의 라이프사이클을 수동으로 처리할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • 라이프사이클 구성 정책이 적용된 S3 버킷 생성.

프로세스

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 버킷 라이프사이클 진행 상황을 나열합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin lc list
    
    [
       {
             “bucket”: “:testbucket:8b63d584-9ea1-4cf3-8443-a6a15beca943.54187.1”,
             “started”: “Thu, 01 Jan 1970 00:00:00 GMT”,
             “status” : “UNINITIAL”
       },
       {
             “bucket”: “:testbucket1:8b635499-9e41-4cf3-8443-a6a15345943.54187.2”,
             “started”: “Thu, 01 Jan 1970 00:00:00 GMT”,
             “status” : “UNINITIAL”
       }
    ]
    Copy to Clipboard Toggle word wrap

    버킷 라이프사이클 처리 상태는 다음 중 하나일 수 있습니다.

    • UNINITIAL - 프로세스가 아직 실행되지 않았습니다.
    • PROCESSING - 프로세스가 현재 실행 중입니다.
    • COMPLETE - 프로세스가 완료되었습니다.
  3. 선택 사항: 버킷 라이프사이클 정책을 수동으로 처리할 수 있습니다.

    1. 단일 버킷에 대한 라이프사이클 정책을 처리합니다.

      구문

      radosgw-admin lc process --bucket=BUCKET_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin lc process --bucket=testbucket1
      Copy to Clipboard Toggle word wrap

    2. 모든 버킷 라이프사이클 정책을 즉시 처리합니다.

      예제

      [ceph: root@host01 /]# radosgw-admin lc process
      Copy to Clipboard Toggle word wrap

검증

  • 버킷 라이프사이클 정책을 나열합니다.

    [ceph: root@host01 /]# radosgw-admin lc list
    [
        {
              “bucket”: “:testbucket:8b63d584-9ea1-4cf3-8443-a6a15beca943.54187.1”,
              “started”: “Thu, 17 Mar 2022 21:48:50 GMT”,
              “status” : “COMPLETE”
        }
        {
              “bucket”: “:testbucket1:8b635499-9e41-4cf3-8443-a6a15345943.54187.2”,
              “started”: “Thu, 17 Mar 2022 20:38:50 GMT”,
              “status” : “COMPLETE”
        }
    ]
    Copy to Clipboard Toggle word wrap

9.8.5. 라이프사이클 만료 창 구성

rgw_lifecycle_work_time 매개변수를 설정하여 라이프사이클 관리 프로세스가 매일 실행되는 시간을 설정할 수 있습니다. 기본적으로 라이프사이클 처리는 매일 자정에 한 번 수행됩니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.

프로세스

  1. Cephadm 쉘에 로그인합니다.

    예제

    [root@host01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  2. 라이프사이클 만료 시간을 설정합니다.

    구문

    ceph config set client.rgw rgw_lifecycle_work_time %D:%D-%D:%D
    Copy to Clipboard Toggle word wrap

    %d:%d-%d:%dstart_hour:start_minute-end_hour:end_minute 로 바꿉니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_lifecycle_work_time 06:00-08:00
    Copy to Clipboard Toggle word wrap

검증

  • 라이프사이클 만료 작업 시간을 검색합니다.

    예제

    [ceph: root@host01 /]# ceph config get client.rgw rgw_lifecycle_work_time
    
    06:00-08:00
    Copy to Clipboard Toggle word wrap

9.8.6. 스토리지 클러스터 내에서 S3 버킷 라이프사이클 전환

버킷 라이프사이클 구성을 사용하여 개체를 관리할 수 있으므로 개체의 수명 동안 개체가 효과적으로 저장됩니다. 오브젝트 라이프사이클 전환 규칙을 사용하면 개체 수명 동안 오브젝트를 관리하고 효과적으로 저장할 수 있습니다. 오브젝트를 더 저렴한 스토리지 클래스, 아카이브로 전환하거나 삭제할 수도 있습니다.

다음과 같은 스토리지 클래스를 생성할 수 있습니다.

  • I/O 민감한 워크로드의 경우 SSD 또는 NVMe와 같은 빠른 미디어
  • 보관을 위해 SAS 또는 SATA와 같은 느린 미디어입니다.

핫 스토리지 클래스와 콜드 스토리지 클래스 간에 데이터 이동 일정을 생성할 수 있습니다. 지정된 시간 후에 이 동작을 예약하여 오브젝트가 만료되고 영구적으로 삭제되도록 예약할 수 있습니다. 예를 들어 오브젝트를 생성한 후 30일 후 스토리지 클래스로 전환하거나 오브젝트를 생성한 후 1년 후 스토리지 클래스로 보관할 수도 있습니다. 이 작업은 전환 규칙을 통해 수행할 수 있습니다. 이 규칙은 한 스토리지 클래스에서 다른 스토리지 클래스로의 오브젝트 전환에 적용됩니다. 라이프사이클 구성에는 < Rule> 요소를 사용하는 하나 이상의 규칙이 포함됩니다.

오브젝트 라이프사이클 전환 규칙을 사용하면 한 스토리지 클래스에서 다른 클래스로 오브젝트를 전환할 수 있습니다.

복제된 풀, 삭제 코딩된 풀 간에 데이터를 마이그레이션하거나, 삭제로 코딩된 풀로 복제하거나, Ceph Object Gateway 라이프사이클 전환 정책을 사용하여 복제된 풀로 삭제할 수 있습니다.

참고

다중 사이트 구성에서 라이프사이클 전환 규칙이 첫 번째 사이트에 적용되면 동일한 스토리지 클러스터에 있는 한 데이터 풀에서 개체를 다른 데이터 풀로 전환하기 위해 두 번째 사이트에 해당 데이터 풀이 생성되고 rgw 애플리케이션을 사용하여 활성화되는 경우 두 번째 사이트에도 동일한 규칙이 적용됩니다.

사전 요구 사항

  • Ceph Object Gateway 소프트웨어 설치.
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • 사용자 액세스 권한이 있는 S3 사용자

프로세스

  1. 새 데이터 풀을 생성합니다.

    구문

    ceph osd pool create POOL_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph osd pool create test.hot.data
    Copy to Clipboard Toggle word wrap

  2. 새 스토리지 클래스를 추가합니다.

    구문

    radosgw-admin zonegroup placement add  --rgw-zonegroup default --placement-id PLACEMENT_TARGET --storage-class STORAGE_CLASS
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup placement add  --rgw-zonegroup default --placement-id default-placement --storage-class hot.test
    {
            "key": "default-placement",
            "val": {
                "name": "default-placement",
                "tags": [],
                "storage_classes": [
                    "STANDARD",
                    "hot.test"
                ]
            }
        }
    Copy to Clipboard Toggle word wrap

  3. 새 스토리지 클래스의 영역 배치 정보를 제공합니다.

    구문

    radosgw-admin zone placement add --rgw-zone default --placement-id PLACEMENT_TARGET --storage-class STORAGE_CLASS --data-pool DATA_POOL
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zone placement add --rgw-zone default --placement-id default-placement --storage-class hot.test --data-pool test.hot.data
    {
               "key": "default-placement",
               "val": {
                   "index_pool": "test_zone.rgw.buckets.index",
                   "storage_classes": {
                       "STANDARD": {
                           "data_pool": "test.hot.data"
                       },
                       "hot.test": {
                           "data_pool": "test.hot.data",
                      }
                   },
                   "data_extra_pool": "",
                   "index_type": 0
               }
    Copy to Clipboard Toggle word wrap

    참고

    쓰기를 한 번 사용하여 콜드 또는 아카이브 데이터 스토리지 풀을 생성할 때 compression_type 을 설정하는 것이 좋습니다.

  4. 데이터 풀에서 rgw 애플리케이션을 활성화합니다.

    구문

    ceph osd pool application enable POOL_NAME rgw
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph osd pool application enable test.hot.data rgw
    enabled application 'rgw' on pool 'test.hot.data'
    Copy to Clipboard Toggle word wrap

  5. 모든 rgw 데몬을 다시 시작합니다.
  6. 버킷을 생성합니다.

    예제

    [ceph: root@host01 /]# aws s3api create-bucket --bucket testbucket10 --create-bucket-configuration LocationConstraint=default:default-placement --endpoint-url http://10.0.0.80:8080
    Copy to Clipboard Toggle word wrap

  7. 오브젝트를 추가합니다.

    예제

    [ceph: root@host01 /]# aws --endpoint=http://10.0.0.80:8080 s3api put-object --bucket testbucket10  --key compliance-upload --body /root/test2.txt
    Copy to Clipboard Toggle word wrap

  8. 두 번째 데이터 풀을 생성합니다.

    구문

    ceph osd pool create POOL_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph osd pool create test.cold.data
    Copy to Clipboard Toggle word wrap

  9. 새 스토리지 클래스를 추가합니다.

    구문

    radosgw-admin zonegroup placement add  --rgw-zonegroup default --placement-id PLACEMENT_TARGET --storage-class STORAGE_CLASS
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup placement add  --rgw-zonegroup default --placement-id default-placement --storage-class cold.test
    {
            "key": "default-placement",
            "val": {
                "name": "default-placement",
                "tags": [],
                "storage_classes": [
                    "STANDARD",
                    "cold.test"
                ]
            }
        }
    Copy to Clipboard Toggle word wrap

  10. 새 스토리지 클래스의 영역 배치 정보를 제공합니다.

    구문

    radosgw-admin zone placement add --rgw-zone default --placement-id PLACEMENT_TARGET --storage-class STORAGE_CLASS --data-pool DATA_POOL
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zone placement add --rgw-zone default --placement-id default-placement --storage-class cold.test --data-pool test.cold.data
    Copy to Clipboard Toggle word wrap

  11. 데이터 풀에서 rgw 애플리케이션을 활성화합니다.

    구문

    ceph osd pool application enable POOL_NAME rgw
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# ceph osd pool application enable test.cold.data rgw
    enabled application 'rgw' on pool 'test.cold.data'
    Copy to Clipboard Toggle word wrap

  12. 모든 rgw 데몬을 다시 시작합니다.
  13. 영역 그룹 구성을 보려면 다음 명령을 실행합니다.

    구문

    radosgw-admin zonegroup get
    {
        "id": "3019de59-ddde-4c5c-b532-7cdd29de09a1",
        "name": "default",
        "api_name": "default",
        "is_master": "true",
        "endpoints": [],
        "hostnames": [],
        "hostnames_s3website": [],
        "master_zone": "adacbe1b-02b4-41b8-b11d-0d505b442ed4",
        "zones": [
            {
                "id": "adacbe1b-02b4-41b8-b11d-0d505b442ed4",
                "name": "default",
                "endpoints": [],
                "log_meta": "false",
                "log_data": "false",
                "bucket_index_max_shards": 11,
                "read_only": "false",
                "tier_type": "",
                "sync_from_all": "true",
                "sync_from": [],
                "redirect_zone": ""
            }
        ],
        "placement_targets": [
            {
                "name": "default-placement",
                "tags": [],
                "storage_classes": [
                    "hot.test",
                    "cold.test",
                    "STANDARD"
                ]
            }
        ],
        "default_placement": "default-placement",
        "realm_id": "",
        "sync_policy": {
            "groups": []
        }
    }
    Copy to Clipboard Toggle word wrap

  14. 영역 구성을 보려면 다음 명령을 실행합니다.

    구문

    radosgw-admin zone get
    {
        "id": "adacbe1b-02b4-41b8-b11d-0d505b442ed4",
        "name": "default",
        "domain_root": "default.rgw.meta:root",
        "control_pool": "default.rgw.control",
        "gc_pool": "default.rgw.log:gc",
        "lc_pool": "default.rgw.log:lc",
        "log_pool": "default.rgw.log",
        "intent_log_pool": "default.rgw.log:intent",
        "usage_log_pool": "default.rgw.log:usage",
        "roles_pool": "default.rgw.meta:roles",
        "reshard_pool": "default.rgw.log:reshard",
        "user_keys_pool": "default.rgw.meta:users.keys",
        "user_email_pool": "default.rgw.meta:users.email",
        "user_swift_pool": "default.rgw.meta:users.swift",
        "user_uid_pool": "default.rgw.meta:users.uid",
        "otp_pool": "default.rgw.otp",
        "system_key": {
            "access_key": "",
            "secret_key": ""
        },
        "placement_pools": [
            {
                "key": "default-placement",
                "val": {
                    "index_pool": "default.rgw.buckets.index",
                    "storage_classes": {
                        "cold.test": {
                            "data_pool": "test.cold.data"
                        },
                        "hot.test": {
                            "data_pool": "test.hot.data"
                        },
                        "STANDARD": {
                            "data_pool": "default.rgw.buckets.data"
                        }
                    },
                    "data_extra_pool": "default.rgw.buckets.non-ec",
                    "index_type": 0
                }
            }
        ],
        "realm_id": "",
        "notif_pool": "default.rgw.log:notif"
    }
    Copy to Clipboard Toggle word wrap

  15. 버킷을 생성합니다.

    예제

    [ceph: root@host01 /]# aws s3api create-bucket --bucket testbucket10 --create-bucket-configuration LocationConstraint=default:default-placement --endpoint-url http://10.0.0.80:8080
    Copy to Clipboard Toggle word wrap

  16. 전환 전에 오브젝트를 나열합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --bucket testbucket10
    
            {
                "ETag": "\"211599863395c832a3dfcba92c6a3b90\"",
                "Size": 540,
                "StorageClass": "STANDARD",
                "Key": "obj1",
                "VersionId": "W95teRsXPSJI4YWJwwSG30KxSCzSgk-",
                "IsLatest": true,
                "LastModified": "2023-11-23T10:38:07.214Z",
                "Owner": {
                    "DisplayName": "test-user",
                    "ID": "test-user"
                }
            }
    Copy to Clipboard Toggle word wrap

  17. 라이프사이클 구성에 사용할 JSON 파일을 생성합니다.

    예제

    [ceph: root@host01 /]# vi lifecycle.json
    Copy to Clipboard Toggle word wrap

  18. 파일에 특정 라이프사이클 구성 규칙을 추가합니다.

    예제

    {
        "Rules": [
            {
                "Filter": {
                    "Prefix": ""
                },
                "Status": "Enabled",
                "Transitions": [
                    {
                        "Days": 5,
                        "StorageClass": "hot.test"
                    },
     {
                        "Days": 20,
                        "StorageClass": "cold.test"
                    }
                ],
                "Expiration": {
                    "Days": 365
                },
                "ID": "double transition and expiration"
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

    라이프사이클 구성 예제에서는 5일 후 기본 STANDARD 스토리지 클래스에서 hot.test 스토리지 클래스로 전환하고 20일 후 cold.test 스토리지 클래스로 다시 전환되며, 마지막으로 cold.test 스토리지 클래스에서 365일이 지나면 만료되는 오브젝트를 보여줍니다.

  19. 버킷에서 라이프사이클 구성을 설정합니다.

    예제

    [ceph: root@host01 /]# aws s3api put-bucket-lifecycle-configuration --bucket testbucket10 --lifecycle-configuration file://lifecycle.json
    Copy to Clipboard Toggle word wrap

  20. 버킷에서 라이프사이클 구성을 검색합니다.

    예제

    [ceph: root@host01 /]# aws s3api get-bucket-lifecycle-configuration --bucket testbucke10
    {
        "Rules": [
            {
                "Expiration": {
                    "Days": 365
                },
                "ID": "double transition and expiration",
                "Prefix": "",
                "Status": "Enabled",
                "Transitions": [
                    {
                        "Days": 20,
                        "StorageClass": "cold.test"
                    },
                    {
                        "Days": 5,
                        "StorageClass": "hot.test"
                    }
                ]
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

  21. 오브젝트가 지정된 스토리지 클래스로 전환되었는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin bucket list --bucket testbucket10
    
            {
                "ETag": "\"211599863395c832a3dfcba92c6a3b90\"",
                "Size": 540,
                "StorageClass": "cold.test",
                "Key": "obj1",
                "VersionId": "W95teRsXPSJI4YWJwwSG30KxSCzSgk-",
                "IsLatest": true,
                "LastModified": "2023-11-23T10:38:07.214Z",
                "Owner": {
                    "DisplayName": "test-user",
                    "ID": "test-user"
                }
            }
    Copy to Clipboard Toggle word wrap

9.8.8. S3에 대한 오브젝트 잠금 활성화

S3 개체 잠금 메커니즘을 사용하면 보존 기간, 법적 보류, 버킷 구성과 같은 개체 잠금 개념을 사용하여 사용자 지정 워크플로우에서 데이터 삭제 권한을 재정의하는 사용자 지정 워크플로우의 일부로 WORM(Write-Once-Read-Many) 기능을 구현할 수 있습니다.

중요

오브젝트 이름이 아닌 오브젝트 버전은 GOVERNANCE 또는 COMPLIANCE 모드를 지원하기 위해 오브젝트 잠금을 올바르게 수행하는 데 필요한 정의 및 필수 값입니다. 나중에 검색할 수 있도록 작성 시 오브젝트 버전을 알아야 합니다.

사전 요구 사항

  • Ceph Object Gateway가 설치된 실행 중인 Red Hat Ceph Storage 클러스터
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.
  • 버전-bucket 생성 액세스 권한이 있는 S3 사용자

프로세스

  1. 오브젝트 잠금이 활성화된 버킷을 생성합니다.

    구문

    aws --endpoint=http://RGW_PORT:8080 s3api create-bucket --bucket BUCKET_NAME --object-lock-enabled-for-bucket
    Copy to Clipboard Toggle word wrap

    예제

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api create-bucket --bucket worm-bucket --object-lock-enabled-for-bucket
    Copy to Clipboard Toggle word wrap

  2. 버킷의 보존 기간을 설정합니다.

    구문

    aws --endpoint=http://RGW_PORT:8080 s3api put-object-lock-configuration --bucket BUCKET_NAME --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "RETENTION_MODE", "Days": NUMBER_OF_DAYS }}}'
    Copy to Clipboard Toggle word wrap

    예제

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api put-object-lock-configuration --bucket worm-bucket --object-lock-configuration '{ "ObjectLockEnabled": "Enabled", "Rule": { "DefaultRetention": { "Mode": "COMPLIANCE", "Days": 10 }}}'
    Copy to Clipboard Toggle word wrap

    참고

    S3 개체 잠금의 RETENTION_MODEGOVERNANCE 또는 COMPLIANCE 모드를 선택하여 오브젝트 잠금으로 보호되는 모든 오브젝트 버전에 다양한 수준의 보호를 적용할 수 있습니다.

    GOVERNANCE 모드에서 사용자는 오브젝트 버전을 덮어쓰거나 삭제하거나 특별한 권한이 없는 경우 잠금 설정을 변경할 수 없습니다.

    COMPLIANCE 모드에서는 AWS 계정의 root 사용자를 포함하여 보호된 오브젝트 버전을 사용자가 덮어쓰거나 삭제할 수 없습니다. 개체가 COMPLIANCE 모드로 잠겨 있으면 해당 RETENTION_MODE 를 변경할 수 없으며 보존 기간을 단축할 수 없습니다. COMPLIANCE 모드를 사용하면 기간 동안 오브젝트 버전을 덮어쓰거나 삭제할 수 없습니다.

  3. 보존 시간이 설정된 버킷에 오브젝트를 배치합니다.

    구문

    aws --endpoint=http://RGW_PORT:8080 s3api put-object --bucket BUCKET_NAME --object-lock-mode RETENTION_MODE --object-lock-retain-until-date "DATE" --key compliance-upload --body TEST_FILE
    Copy to Clipboard Toggle word wrap

    예제

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api put-object --bucket worm-bucket --object-lock-mode COMPLIANCE --object-lock-retain-until-date "2022-05-31" --key compliance-upload --body test.dd
    {
        "ETag": "\"d560ea5652951637ba9c594d8e6ea8c1\"",
        "VersionId": "Nhhk5kRS6Yp6dZXVWpZZdRcpSpBKToD"
    }
    Copy to Clipboard Toggle word wrap

  4. 동일한 키를 사용하여 새 오브젝트를 업로드합니다.

    구문

    aws --endpoint=http://RGW_PORT:8080 s3api put-object --bucket BUCKET_NAME --object-lock-mode RETENTION_MODE --object-lock-retain-until-date "DATE" --key compliance-upload --body PATH
    Copy to Clipboard Toggle word wrap

    예제

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api put-object --bucket worm-bucket --object-lock-mode COMPLIANCE --object-lock-retain-until-date "2022-05-31" --key compliance-upload --body /etc/fstab
    {
        "ETag": "\"d560ea5652951637ba9c594d8e6ea8c1\"",
        "VersionId": "Nhhk5kRS6Yp6dZXVWpZZdRcpSpBKToD"
    }
    Copy to Clipboard Toggle word wrap

명령줄 옵션

  • 개체 버전에서 개체 잠금을 설정합니다.

    예제

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api put-object-legal-hold --bucket worm-bucket --key compliance-upload --legal-hold Status=ON
    Copy to Clipboard Toggle word wrap

    참고

    개체 잠금 법적 보류 작업을 사용하면 개체 버전에 법적 유지를 배치하여 개체 버전을 덮어쓰거나 삭제할 수 없습니다. 법적 유지에는 관련 보존 기간이 없으므로 제거될 때까지 계속 적용됩니다.

  • 버킷의 오브젝트를 나열하여 최신 버전의 오브젝트만 검색합니다.

    예제

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api list-objects --bucket worm-bucket
    Copy to Clipboard Toggle word wrap

  • 버킷의 오브젝트 버전을 나열합니다.

    예제

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api list-objects --bucket worm-bucket
    {
        "Versions": [
            {
                "ETag": "\"d560ea5652951637ba9c594d8e6ea8c1\"",
                "Size": 288,
                "StorageClass": "STANDARD",
                "Key": "hosts",
                "VersionId": "Nhhk5kRS6Yp6dZXVWpZZdRcpSpBKToD",
                "IsLatest": true,
                "LastModified": "2022-06-17T08:51:17.392000+00:00",
                "Owner": {
                    "DisplayName": "Test User in Tenant test",
                    "ID": "test$test.user"
                }
                }
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

  • version-ids를 사용하여 오브젝트에 액세스합니다.

    예제

    [root@rgw-2 ~]# aws --endpoint=http://rgw.ceph.com:8080 s3api get-object --bucket worm-bucket  --key compliance-upload --version-id 'IGOU.vdIs3SPduZglrB-RBaK.sfXpcd' download.1
    {
        "AcceptRanges": "bytes",
        "LastModified": "2022-06-17T08:51:17+00:00",
        "ContentLength": 288,
        "ETag": "\"d560ea5652951637ba9c594d8e6ea8c1\"",
        "VersionId": "Nhhk5kRS6Yp6dZXVWpZZdRcpSpBKToD",
        "ContentType": "binary/octet-stream",
        "Metadata": {},
        "ObjectLockMode": "COMPLIANCE",
        "ObjectLockRetainUntilDate": "2023-06-17T08:51:17+00:00"
    }
    Copy to Clipboard Toggle word wrap

9.9. 사용법

Ceph Object Gateway는 각 사용자의 사용량을 기록합니다. 또한 날짜 범위 내에서 사용자 사용량을 추적할 수 있습니다.

옵션은 다음과 같습니다.

  • 시작일 : --start-date 옵션을 사용하면 특정 시작 날짜 의 사용 통계를 필터링할 수 있습니다(예: y yyyy-mm-dd[HH:MM:SS]).
  • 종료일: --end-date 옵션을 사용하면 특정 날짜 까지 사용량을 필터링할 수 있습니다(예: yyyy-mm-dd[HH:MM:SS]).
  • 로그 항목: --show-log-entries 옵션을 사용하면 통계를 사용하여 로그 항목을 포함할지 여부를 지정할 수 있습니다(옵션: true | false).
참고

분 및 초로 시간을 지정할 수 있지만 1시간 해상도로 저장됩니다.

9.9.1. 사용량 표시

사용량 통계를 표시하려면 사용량을 show 로 지정합니다. 특정 사용자의 사용량을 표시하려면 사용자 ID를 지정해야 합니다. 시작 날짜, 종료 날짜 및 로그 항목을 표시할지 여부를 지정할 수도 있습니다.

예제

[ceph: root@host01 /]# radosgw-admin usage show \
                --uid=johndoe --start-date=2022-06-01 \
                --end-date=2022-07-01
Copy to Clipboard Toggle word wrap

사용자 ID를 생략하여 모든 사용자에 대한 사용 정보에 대한 요약을 표시할 수도 있습니다.

예제

[ceph: root@host01 /]# radosgw-admin usage show --show-log-entries=false
Copy to Clipboard Toggle word wrap

9.9.2. Trim 사용

사용량이 많은 경우 사용 로그가 스토리지 공간을 차지하기 시작할 수 있습니다. 모든 사용자와 특정 사용자의 사용 로그를 트리밍할 수 있습니다. 트리밍 작업의 날짜 범위를 지정할 수도 있습니다.

예제

[ceph: root@host01 /]# radosgw-admin usage trim --start-date=2022-06-01 \
                    --end-date=2022-07-31

[ceph: root@host01 /]# radosgw-admin usage trim --uid=johndoe
[ceph: root@host01 /]# radosgw-admin usage trim --uid=johndoe --end-date=2021-04-31
Copy to Clipboard Toggle word wrap

9.10. Ceph Object Gateway 데이터 레이아웃

RADOS는 확장 속성(xattrs) 및 개체 맵(OMAP)이 있는 풀 및 오브젝트에 대해서만 알고 있지만 Ceph Object Gateway는 개념적으로 Ceph Object Gateway를 사용하여 데이터를 세 가지 유형으로 구성합니다.

  • 메타데이터
  • 버킷 인덱스
  • data

메타데이터

메타데이터 섹션에는 세 가지 섹션이 있습니다.

  • 사용자: 사용자 정보를 보관합니다.
  • bucket: 버킷 이름과 버킷 인스턴스 ID 간의 매핑이 있습니다.
  • bucket.instance: 버킷 인스턴스 정보를 보관합니다.

다음 명령을 사용하여 메타데이터 항목을 볼 수 있습니다.

구문

radosgw-admin metadata get bucket:BUCKET_NAME
radosgw-admin metadata get bucket.instance:BUCKET:BUCKET_ID
radosgw-admin metadata get user:USER
radosgw-admin metadata set user:USER
Copy to Clipboard Toggle word wrap

예제

[ceph: root@host01 /]# radosgw-admin metadata list
[ceph: root@host01 /]# radosgw-admin metadata list bucket
[ceph: root@host01 /]# radosgw-admin metadata list bucket.instance
[ceph: root@host01 /]# radosgw-admin metadata list user
Copy to Clipboard Toggle word wrap

모든 메타데이터 항목은 단일 RADOS 오브젝트에 유지됩니다.

참고

Ceph Object Gateway 오브젝트는 매니페스트, ACL(액세스 제어 목록), 콘텐츠 유형, ETag 및 사용자 정의 메타데이터와 같은 메타데이터가 포함된 헤드인 여러 RADOS 오브젝트로 구성될 수 있습니다. 메타데이터는 xattrs 에 저장됩니다. 헤드는 효율성과 원자성을 위해 최대 512KB의 오브젝트 데이터를 포함할 수도 있습니다. 매니페스트는 RADOS 오브젝트에서 각 오브젝트를 설명하는 방법을 설명합니다.

버킷 인덱스

이는 다른 종류의 메타데이터이며 별도로 보관합니다. 버킷 인덱스에는 RADOS 오브젝트에 키-값 맵이 있습니다. 기본적으로 버킷당 단일 RADOS 오브젝트이지만 여러 RADOS 오브젝트를 통해 맵을 분할할 수 있습니다.

맵 자체는 각 RADOS 오브젝트와 연결된 OMAP에 보관됩니다. 각 OMAP의 키는 오브젝트의 이름이며 이 값에는 버킷을 나열할 때 표시되는 메타데이터인 해당 오브젝트의 기본 메타데이터가 포함됩니다. 각 OMAP는 헤더를 보유하고 있으며 오브젝트 수, 총 크기 등과 같은 해당 헤더에 버킷 회계 메타데이터를 유지합니다.

중요

radosgw-admin 툴을 사용하는 경우 툴과 Ceph Cluster가 동일한 버전인지 확인합니다. 일치하지 않는 버전 사용은 지원되지 않습니다.

참고

OMAP는 확장 속성이 POSIX 파일과 연결되는 방법과 유사한 방식으로 오브젝트와 연결된 키-값 저장소입니다. 오브젝트의 OMAP는 오브젝트 스토리지에 물리적으로 위치하지 않지만 정확한 구현은 표시되지 않으며 Ceph Object Gateway에 부적합합니다.

data

오브젝트 데이터는 각 Ceph Object Gateway 오브젝트에 대해 하나 이상의 RADOS 오브젝트에 보관됩니다.

9.10.1. 오브젝트 조회 경로

오브젝트에 액세스할 때 REST API는 다음 세 가지 매개변수와 함께 Ceph Object Gateway로 제공됩니다.

  • S3 또는 Swift의 계정 이름에 액세스 키가 있는 계정 정보
  • 버킷 또는 컨테이너 이름
  • 오브젝트 이름 또는 키

현재 Ceph Object Gateway는 계정 정보만 사용하여 사용자 ID를 찾고 액세스 제어를 위해 사용합니다. 버킷 이름과 오브젝트 키만 사용하여 풀의 오브젝트를 처리합니다.

계정 정보

Ceph Object Gateway의 사용자 ID는 문자열이며 일반적으로 사용자 자격 증명의 실제 사용자 이름이 해시되거나 매핑된 식별자가 아닙니다.

사용자 데이터에 액세스할 때 사용자 레코드는 default.rgw.meta 풀의 users.rgw.meta 풀에서 users.uid 네임스페이스를 사용하여 로드됩니다. .Bucket 이름은 root 네임스페이스를 사용하여 default.rgw.meta 풀에 표시됩니다. 버킷 레코드는 버킷 ID 역할을 하는 마커를 얻기 위해 로드됩니다.

오브젝트 이름

오브젝트는 default.rgw.buckets.data 풀에 있습니다. 개체 이름은 MARKER_KEY (예: default.7593.4_image.png )입니다. 여기서 마커는 default.7593.4 이고 키는 image.png 입니다. 이러한 연결된 이름은 구문 분석되지 않으며 RADOS에만 전달됩니다. 따라서 구분 기호의 선택이 중요하지 않고 모호성을 초래하지 않습니다. 동일한 이유로 오브젝트 이름(예: 키)에 슬래시가 허용됩니다.

9.10.1.1. 여러 데이터 풀

기본적으로 다른 사용자 버킷이 다른 RADOS 풀에 생성되도록 여러 데이터 풀을 생성할 수 있으므로 필요한 스케일링을 제공할 수 있습니다. 이러한 풀의 레이아웃 및 이름은 정책 설정을 통해 제어됩니다.

9.10.2. 버킷 및 오브젝트 목록

지정된 사용자에게 속하는 버킷은 USER_ID.buckets 라는 오브젝트의 OMAP에 나열됩니다(예: users . uid 네임스페이스가 있는 default.rgw.meta 풀에 있음). 이러한 오브젝트는 버킷을 나열하고, 버킷 콘텐츠를 업데이트할 때, 할당량과 같은 버킷 통계를 업데이트하고 검색할 때 액세스할 수 있습니다. 이러한 목록은 .rgw 풀의 버킷과 일관되게 유지됩니다.

참고

이러한 OMAP 항목의 값은 user-visible, encoded class cls_user_bucket_entry 및 중첩된 클래스 cls_user_bucket 을 참조하십시오.

지정된 버킷에 속하는 오브젝트는 버킷 인덱스에 나열됩니다. index 오브젝트의 기본 이름 이름은 default.rgw.buckets.index 풀에서 .dir.MARKER 입니다.

9.10.3. Object Gateway 데이터 레이아웃 매개변수

이는 Ceph Object Gateway의 데이터 레이아웃 매개변수 목록입니다.

알려진 풀:

.rgw.root
지정되지 않은 리전, 영역 및 글로벌 정보 레코드, 오브젝트당 하나씩.
ZONE.rgw.control
통지.N
ZONE.rgw.meta

다양한 종류의 메타데이터가 있는 다중 네임스페이스

namespace: root

BUCKET .bucket.meta.BUCKET:MARKER # put_bucket_instance_info()를 참조하십시오.

테넌트는 버킷을 모호하게 하는 데 사용되지만 버킷 인스턴스는 모호하지 않습니다.

예제

.bucket.meta.prodtx:test%25star:default.84099.6
.bucket.meta.testcont:default.4126.1
.bucket.meta.prodtx:testcont:default.84099.4
prodtx/testcont
prodtx/test%25star
testcont
Copy to Clipboard Toggle word wrap

namespace: users.uid

USER 오브젝트에 사용자별 정보(RGWUserInfo) 및 USER .buckets 오브젝트의 omaps에 있는 사용자별 버킷 목록을 포함합니다. 비어 있지 않은 경우 USER 는 테넌트를 포함할 수 있습니다.

예제

prodtx$prodt
test2.buckets
prodtx$prodt.buckets
test2
Copy to Clipboard Toggle word wrap

namespace: users.email
중요하지 않음
namespace: users.keys

47UA98JSTJZ9YAN3OS3O

이를 통해 Ceph Object Gateway는 인증 중에 액세스 키를 통해 사용자를 조회할 수 있습니다.

namespace: users.swift
test:tester
ZONE.rgw.buckets.index
오브젝트 이름은 .dir입니다.MARKER 에는 각각 버킷 인덱스가 포함되어 있습니다. 인덱스가 분할되면 각 shard가 마커 뒤에 shard 인덱스를 추가합니다.
ZONE.rgw.buckets.data

default.7593.4__shadow_.488urDFerTYXavx4yAd-Op8mxehnvTI_1 MARKER_KEY

마커의 예는 default.16004.1 또는 default.7593.4 입니다. 현재 형식은 ZONE.INSTANCE_ID.BUCKET_ID 이지만 생성되면 마커가 다시 구문 분석되지 않으므로 나중에 형식이 자유롭게 변경될 수 있습니다.

9.11. 데이터 수집에 대한 속도 제한

스토리지 관리자는 Ceph Object Gateway 구성으로 Red Hat Ceph Storage 클러스터에 오브젝트를 저장할 때 작업 및 대역폭을 기반으로 사용자와 버킷에 대한 속도 제한을 설정할 수 있습니다.

9.11.1. 스토리지 클러스터의 속도 제한의 목적

Ceph Object Gateway 구성에서 사용자 및 버킷에 대한 속도 제한을 설정할 수 있습니다. 속도 제한에는 최대 읽기 작업 수, 분당 쓰기 작업 수 및 사용자당 또는 버킷당 읽기/분당 바이트 수가 포함됩니다.

REST에서 GET 또는 HEAD 메서드를 사용하는 요청은 "읽기 요청"이고, 그 요청은 "쓰기 요청"입니다.

Ceph Object Gateway는 사용자 및 버킷 요청을 별도로 추적하고 다른 게이트웨이와 공유하지 않습니다. 즉, 구성된 원하는 제한을 활성 Object Gateway 수로 나누어야 합니다.

예를 들어, 사용자 A를 분당 10개의 ops로 제한해야 하고 클러스터에 두 개의 Ceph Object Gateway가 있는 경우 사용자 A에 대한 제한은 5개, 즉 두 개의 Ceph Object Gateway의 분당 10개의 ops가 있어야 합니다. Ceph Object Gateway 간에 요청의 균형을 조정하지 않으면 속도 제한이 악용되지 않을 수 있습니다. 예를 들어 ops 제한이 5개이고 Ceph Object Gateway 두 개가 있지만 로드 밸런서에서 해당 Ceph Object Gateway 중 하나에만 부하를 보내는 경우 Ceph Object Gateway마다 이 제한이 적용되므로 유효 제한은 5개의 ops가 됩니다.

버킷에 대해 제한에 도달했지만 사용자를 위해 도달하지 않거나 그 반대의 경우 요청도 취소됩니다.

대역폭 계산은 요청이 승인된 후 수행됩니다. 결과적으로 이 요청은 요청 중 버킷 또는 사용자가 대역폭 제한에 도달한 경우에도 진행됩니다.

Ceph Object Gateway는 구성된 값보다 사용된 바이트의 "debt"를 유지하고, "debt"가 지불될 때까지 이 사용자 또는 버킷이 더 많은 요청을 전송하지 못하도록 합니다. "debt" 최대 크기는 분당 max-read/write-bytes의 두 배입니다. 사용자 A에 분당 1바이트 읽기 제한이 있고 이 사용자가 1GB 오브젝트를 가져오려고 하면 사용자가 수행할 수 있습니다.

사용자 A가 이 1GB 작업을 완료하면 사용자 A가 GET 요청을 다시 보낼 수 있을 때까지 Ceph Object Gateway에서 최대 2분 동안 사용자 요청을 차단합니다.

속도 제한에 대한 다양한 옵션:

  • 버킷: --bucket 옵션을 사용하면 버킷에 대한 속도 제한을 지정할 수 있습니다.
  • user: --uid 옵션을 사용하면 사용자의 속도 제한을 지정할 수 있습니다.
  • 최대 읽기 작업: --max-read-ops 설정을 사용하면 Ceph Object Gateway당 분당 최대 읽기 ops 수를 지정할 수 있습니다. 값이 0 이면 이 설정이 비활성화됩니다. 즉, 무제한 액세스를 의미합니다.
  • 최대 읽기 바이트: --max-read-bytes 설정을 사용하면 Ceph Object Gateway당 분당 최대 읽기 바이트 수를 지정할 수 있습니다. 값이 0 이면 이 설정이 비활성화됩니다. 즉, 무제한 액세스를 의미합니다.
  • 최대 쓰기 작업: --max-write-ops 설정을 사용하면 Ceph Object Gateway당 분당 최대 쓰기 작업 수를 지정할 수 있습니다. 값이 0 이면 이 설정이 비활성화됩니다. 즉, 무제한 액세스를 의미합니다.
  • 최대 쓰기 바이트: --max-write-bytes 설정을 사용하면 Ceph Object Gateway당 분당 최대 쓰기 바이트 수를 지정할 수 있습니다. 값이 0 이면 이 설정이 비활성화됩니다. 즉, 무제한 액세스를 의미합니다.
  • rate limit 범위: --rate-limit-scope 옵션은 속도 제한 범위를 설정합니다. 옵션은 버킷,사용자익명 입니다. 버킷 속도 제한은 버킷에 적용되며, 사용자 속도 제한이 사용자에게 적용되며, 인증되지 않은 사용자에게 익명이 적용됩니다. 익명 범위는 글로벌 속도 제한에서만 사용할 수 있습니다.

9.11.2. 사용자 속도 제한 활성화

Ceph Object Gateway 구성에서 사용자에 대한 속도 제한을 설정할 수 있습니다. 사용자의 속도 제한에는 최대 읽기 작업 수, 분당 쓰기 작업 수, 사용자당 쓰기 또는 읽을 수 있는 분당 바이트 수가 포함됩니다.

ratelimit-scope 가 사용자로 설정된 radosgw-admin ratelimit set 명령을 사용하여 속도 제한 값을 설정한 후 사용자에 게 속도 제한을 활성화할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있어야 합니다.

프로세스

  1. 사용자의 유량 제한을 설정합니다.

    구문

    radosgw-admin ratelimit set --ratelimit-scope=user --uid=USER_ID [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES]
    [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin ratelimit set --ratelimit-scope=user --uid=testing --max-read-ops=1024 --max-write-bytes=10240
    Copy to Clipboard Toggle word wrap

    NUMBER_OF_OPERATIONS 또는 NUMBER_OF_BYTES 의 경우 0 값은 특정 속도 제한 특성 검사가 비활성화되어 있음을 의미합니다.

  2. 사용자 속도 제한을 가져옵니다.

    구문

    radosgw-admin ratelimit get --ratelimit-scope=user --uid=USER_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin ratelimit get --ratelimit-scope=user --uid=testing
    
    {
        "user_ratelimit": {
            "max_read_ops": 1024,
            "max_write_ops": 0,
            "max_read_bytes": 0,
            "max_write_bytes": 10240,
            "enabled": false
        }
    }
    Copy to Clipboard Toggle word wrap

  3. 사용자 속도 제한을 활성화합니다.

    구문

    radosgw-admin ratelimit enable --ratelimit-scope=user --uid=USER_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin ratelimit enable --ratelimit-scope=user --uid=testing
    
    {
        "user_ratelimit": {
            "max_read_ops": 1024,
            "max_write_ops": 0,
            "max_read_bytes": 0,
            "max_write_bytes": 10240,
            "enabled": true
        }
    }
    Copy to Clipboard Toggle word wrap

  4. 선택 사항: 사용자 속도 제한을 비활성화합니다.

    구문

    radosgw-admin ratelimit disable --ratelimit-scope=user --uid=USER_ID
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin ratelimit disable --ratelimit-scope=user --uid=testing
    Copy to Clipboard Toggle word wrap

9.11.3. 버킷 속도 제한 활성화

Ceph Object Gateway 구성에서 버킷에 대한 속도 제한을 설정할 수 있습니다. 버킷의 속도 제한에는 최대 읽기 작업 수, 분당 쓰기 작업 수, 사용자당 쓰기 또는 읽을 수 있는 분당 바이트 수가 포함됩니다.

ratelimit-scope 가 버킷으로 설정된 radosgw-admin ratelimit set 명령을 사용하여 속도 제한 값을 설정한 후 버킷에 속도 제한을 활성화할 수 있습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있어야 합니다.

프로세스

  1. 버킷의 속도 제한을 설정합니다.

    구문

    radosgw-admin ratelimit set --ratelimit-scope=bucket --bucket= BUCKET_NAME [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES]
    [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin ratelimit set --ratelimit-scope=bucket --bucket=mybucket --max-read-ops=1024 --max-write-bytes=10240
    Copy to Clipboard Toggle word wrap

    NUMBER_OF_OPERATIONS 또는 NUMBER_OF_BYTES 의 경우 0 값은 특정 속도 제한 특성 검사가 비활성화되어 있음을 의미합니다.

  2. 버킷 속도 제한을 가져옵니다.

    구문

    radosgw-admin ratelimit get --ratelimit-scope=bucket --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin ratelimit get --ratelimit-scope=bucket --bucket=mybucket
    
    {
        "bucket_ratelimit": {
            "max_read_ops": 1024,
            "max_write_ops": 0,
            "max_read_bytes": 0,
            "max_write_bytes": 10240,
            "enabled": false
        }
    }
    Copy to Clipboard Toggle word wrap

  3. 버킷 속도 제한을 활성화합니다.

    구문

    radosgw-admin ratelimit enable --ratelimit-scope=bucket --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin ratelimit enable --ratelimit-scope=bucket --bucket=mybucket
    
    {
        "bucket_ratelimit": {
            "max_read_ops": 1024,
            "max_write_ops": 0,
            "max_read_bytes": 0,
            "max_write_bytes": 10240,
            "enabled": true
        }
    }
    Copy to Clipboard Toggle word wrap

  4. 선택 사항: 버킷 속도 제한을 비활성화합니다.

    구문

    radosgw-admin ratelimit disable --ratelimit-scope=bucket --bucket=BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin ratelimit disable --ratelimit-scope=bucket --bucket=mybucket
    Copy to Clipboard Toggle word wrap

9.11.4. 글로벌 속도 제한 구성

기간 구성에서 글로벌 속도 제한 설정을 읽거나 쓸 수 있습니다. ratelimit 세트 ,ratelimit enable, ratelimit enable 및 ratelimit disable 명령인 global ratelimit 매개변수를 사용하여 글로벌 속도 제한 설정을 조작하여 사용자 또는 버킷 속도 제한 구성을 덮어쓸 수 있습니다.

참고

영역과 기간이 있는 다중 사이트 구성에서 글로벌 속도 제한에 대한 변경 사항을 period update --commit 명령을 사용하여 커밋해야 합니다. 기간이 없는 경우 변경 사항을 적용하려면 Ceph Object Gateway를 다시 시작해야 합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway가 설치되어 있어야 합니다.

프로세스

  1. 글로벌 속도 제한 설정을 확인합니다.

    구문

    radosgw-admin global ratelimit get
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin global ratelimit get
    
    {
        "bucket_ratelimit": {
            "max_read_ops": 1024,
            "max_write_ops": 0,
            "max_read_bytes": 0,
            "max_write_bytes": 0,
            "enabled": false
        },
        "user_ratelimit": {
            "max_read_ops": 0,
            "max_write_ops": 0,
            "max_read_bytes": 0,
            "max_write_bytes": 0,
            "enabled": false
        },
        "anonymous_ratelimit": {
            "max_read_ops": 0,
            "max_write_ops": 0,
            "max_read_bytes": 0,
            "max_write_bytes": 0,
            "enabled": false
        }
    }
    Copy to Clipboard Toggle word wrap

  2. 버킷에 대한 속도 제한 범위를 구성하고 활성화합니다.

    1. 버킷에 대한 글로벌 속도 제한을 설정합니다.

      구문

      radosgw-admin global ratelimit set --ratelimit-scope=bucket [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES]
      [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope bucket --max-read-ops=1024
      Copy to Clipboard Toggle word wrap

    2. 버킷 속도 제한을 활성화합니다.

      구문

      radosgw-admin global ratelimit enable --ratelimit-scope=bucket
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope bucket
      Copy to Clipboard Toggle word wrap

  3. 인증된 사용자의 속도 제한 범위를 구성하고 활성화합니다.

    1. 사용자의 글로벌 속도 제한을 설정합니다.

      구문

      radosgw-admin global ratelimit set --ratelimit-scope=user [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES]
      [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope=user --max-read-ops=1024
      Copy to Clipboard Toggle word wrap

    2. 사용자 속도 제한을 활성화합니다.

      구문

      radosgw-admin global ratelimit enable --ratelimit-scope=user
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=user
      Copy to Clipboard Toggle word wrap

  4. 인증되지 않은 사용자의 속도 제한 범위를 구성하고 활성화합니다.

    1. 인증되지 않은 사용자의 글로벌 속도 제한을 설정합니다.

      구문

      radosgw-admin global ratelimit set --ratelimit-scope=anonymous [--max-read-ops=NUMBER_OF_OPERATIONS] [--max-read-bytes=NUMBER_OF_BYTES]
      [--max-write-ops=NUMBER_OF_OPERATIONS] [--max-write-bytes=NUMBER_OF_BYTES]
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin global ratelimit set --ratelimit-scope=anonymous --max-read-ops=1024
      Copy to Clipboard Toggle word wrap

    2. 사용자 속도 제한을 활성화합니다.

      구문

      radosgw-admin global ratelimit enable --ratelimit-scope=anonymous
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin global ratelimit enable --ratelimit-scope=anonymous
      Copy to Clipboard Toggle word wrap

9.12. Ceph Object Gateway의 가비지 컬렉션 최적화

새 데이터 오브젝트가 스토리지 클러스터에 작성되면 Ceph Object Gateway에서 이러한 새 오브젝트에 즉시 스토리지를 할당합니다. 스토리지 클러스터에서 데이터 오브젝트를 삭제하거나 덮어쓰면 Ceph Object Gateway는 버킷 인덱스에서 해당 오브젝트를 삭제합니다. 잠시 후 Ceph Object Gateway는 스토리지 클러스터에 오브젝트를 저장하는 데 사용된 공간을 제거합니다. 스토리지 클러스터에서 삭제된 오브젝트 데이터를 제거하는 프로세스를 Garbage Collection 또는 GC라고 합니다.

가비지 컬렉션 작업은 일반적으로 백그라운드에서 실행됩니다. 이러한 작업을 지속적으로 실행하거나 활동이 낮은 워크로드 및 간단한 워크로드 간격 동안만 실행되도록 구성할 수 있습니다. 기본적으로 Ceph Object Gateway는 GC 작업을 지속적으로 수행합니다. GC 작업은 Ceph Object Gateway 작업의 정상적인 부분이므로 가비지 컬렉션을 받을 수 있는 삭제된 오브젝트는 대부분 존재합니다.

9.12.1. 가비지 컬렉션 대기열 보기

스토리지 클러스터에서 삭제 및 덮어쓰는 오브젝트를 제거하기 전에 radosgw-admin 을 사용하여 가비지 컬렉션을 기다리는 오브젝트를 확인합니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway에 대한 루트 수준 액세스.

프로세스

  • 가비지 컬렉션을 기다리는 개체의 큐를 보려면 다음을 수행합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin gc list
    Copy to Clipboard Toggle word wrap

참고

만료되지 않은 항목을 포함하여 큐의 모든 항목을 나열하려면 --include-all 옵션을 사용합니다.

9.12.2. Garbage 컬렉션 설정 조정

Ceph Object Gateway는 새로 작성한 오브젝트와 덮어쓰는 오브젝트에 즉시 스토리지를 할당합니다. 또한 다중 파트 업로드 부분에서도 일부 스토리지가 사용됩니다.

Ceph Object Gateway는 버킷 인덱스에서 오브젝트를 삭제한 후 삭제된 오브젝트에 사용되는 스토리지 공간을 제거합니다. 마찬가지로 Ceph Object Gateway는 다중 부분 업로드가 완료된 후 또는 업로드가 비활성화되거나 구성 가능한 시간 동안 완료되지 못한 경우 다중 파트 업로드와 연결된 데이터를 삭제합니다. Red Hat Ceph Storage 클러스터에서 삭제된 개체 데이터를 제거하는 프로세스를 GC(가비지 컬렉션)라고 합니다.

가비지 컬렉션을 기다리는 오브젝트는 다음 명령을 사용하여 수행할 수 있습니다.

radosgw-admin gc list
Copy to Clipboard Toggle word wrap

가비지 컬렉션은 스토리지 관리자가 Ceph Object Gateway를 구성하는 방법에 따라 지속적으로 또는 낮은 로드 시간 동안 실행되는 백그라운드 활동입니다. 기본적으로 Ceph Object Gateway는 가비지 컬렉션 작업을 지속적으로 수행합니다. 가비지 컬렉션 작업은 Ceph Object Gateway의 정상적인 기능이며, 특히 오브젝트 삭제 작업과 함께 가비지 컬렉션에 적합한 개체는 대부분 존재합니다.

일부 워크로드는 가비지 컬렉션 활동 속도를 일시적으로 또는 영구적으로 비활성화할 수 있습니다. 이는 특히 많은 오브젝트가 짧은 기간 동안 저장되고 삭제되는 삭제가 많은 워크로드에 적용됩니다. 이러한 유형의 워크로드의 경우 스토리지 관리자는 다음 구성 매개변수를 사용하여 다른 작업과 관련된 가비지 수집 작업의 우선 순위를 높일 수 있습니다.

  • rgw_gc_obj_min_wait 구성 옵션은 삭제된 오브젝트 데이터를 제거하기 전에 최소 시간(초)을 기다립니다. 기본값은 2시간 또는 7200초입니다. 클라이언트가 오브젝트를 읽을 수 있기 때문에 개체가 즉시 제거되지 않습니다. 워크로드가 많은 경우 이 설정은 너무 많은 스토리지를 사용하거나 제거할 삭제된 오브젝트를 많이 보유할 수 있습니다. Red Hat은 이 값을 30분 이하 또는 1800초 미만으로 설정하지 않는 것이 좋습니다.
  • rgw_gc_processor_period 구성 옵션은 가비지 컬렉션 런타임입니다. 즉 가비지 컬렉션 스레드의 연속 실행 사이의 시간입니다. 가비지 컬렉션이 이 기간보다 오래 실행되는 경우 가비지 컬렉션 사이클을 다시 실행하기 전에 Ceph Object Gateway가 기다리지 않습니다.
  • rgw_gc_max_concurrent_io 구성 옵션은 삭제된 데이터를 제거할 때 게이트웨이 가비지 컬렉션 스레드가 사용할 동시 IO 작업의 최대 수를 지정합니다. 많은 워크로드를 삭제하면 이 설정을 다수의 동시 IO 작업으로 늘리는 것이 좋습니다.
  • rgw_gc_max_trim_chunk 구성 옵션은 단일 작업에서 가비지 수집기 로그에서 제거할 최대 키 수를 지정합니다. 삭제에 따른 작업에서 각 가비지 수집 작업 중에 더 많은 오브젝트가 제거되도록 최대 키 수를 늘리는 것이 좋습니다.

Red Hat Ceph Storage 4.1부터 가비지 컬렉션 로그에서 인덱스 오브젝트의 OMAP를 오프로드하면 스토리지 클러스터에 대한 가비지 수집 작업의 성능 영향을 줄일 수 있습니다. 다음과 같이 몇 가지 새로운 구성 매개 변수가 Ceph Object Gateway에 추가되어 가비지 컬렉션 큐를 조정합니다.

  • rgw_gc_max_deferred_entries_size 구성 옵션은 가비지 컬렉션 큐에서 지연된 항목의 최대 크기를 설정합니다.
  • rgw_gc_max_queue_size 구성 옵션은 가비지 컬렉션에 사용되는 최대 큐 크기를 설정합니다. 이 값은 osd_max_object_size - rgw_gc_max_deferred_entries_size - 1KB보다 크지 않아야 합니다.
  • rgw_gc_max_deferred 구성 옵션은 가비지 컬렉션 큐에 저장된 지연된 최대 항목 수를 설정합니다.
참고

이러한 가비지 컬렉션 구성 매개변수는 Red Hat Ceph Storage 7 이상용입니다.

참고

50% 삭제 및 50% 쓰기 작업과 같은 균등하게 균형 있는 삭제-쓰기 워크로드로 스토리지 클러스터가 11시간 내에 완전히 채워집니다. Ceph Object Gateway 가비지 컬렉션이 삭제 작업의 속도를 유지하지 못하기 때문입니다. 이 경우 클러스터 상태가 HEALTH_ERR 상태로 전환됩니다. 병렬 가비지 컬렉션 튜닝 가능 항목에 대한 공격적인 설정은 스토리지 클러스터 세트 테스트가 크게 지연되고 많은 워크로드에 도움이 될 수 있습니다. 일반적인 실제 스토리지 클러스터 워크로드는 주로 가비지 컬렉션으로 인해 스토리지 클러스터가 채워지지 않을 수 있습니다.

9.12.3. 삭제가 필요한 워크로드에 대한 가비지 컬렉션 조정

일부 워크로드는 가비지 컬렉션 활동 속도를 일시적으로 또는 영구적으로 비활성화할 수 있습니다. 이는 특히 짧은 기간 동안 많은 오브젝트가 저장되고 삭제되는 삭제와 관련된 워크로드에서 특히 그러합니다. 이러한 유형의 워크로드의 경우 다른 작업과 관련된 가비지 수집 작업의 우선 순위를 늘리는 것이 좋습니다. Ceph Object Gateway Garbage Collection에 대한 추가 질문이 있는 경우 Red Hat 지원팀에 문의하십시오.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 스토리지 클러스터의 모든 노드에 대한 루트 수준 액세스.

프로세스

  1. rgw_gc_max_concurrent_io 값을 20 으로 설정하고 rgw_gc_max_trim_chunk 의 값을 64 로 설정합니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_gc_max_concurrent_io 20
    [ceph: root@host01 /]# ceph config set client.rgw rgw_gc_max_trim_chunk 64
    Copy to Clipboard Toggle word wrap

  2. Ceph Object Gateway를 다시 시작하여 변경된 설정을 적용할 수 있습니다.
  3. GC 활동 중에 스토리지 클러스터를 모니터링하여 증가된 값이 성능에 부정적인 영향을 미치지 않는지 확인합니다.
중요

실행 중인 클러스터에서 rgw_gc_max_objs 옵션의 값을 수정하지 마십시오. RGW 노드를 배포하기 전에 이 값을 변경해야 합니다.

9.13. Ceph Object Gateway의 데이터 개체 스토리지 최적화

버킷 라이프사이클 구성은 데이터 오브젝트 스토리지를 최적화하여 효율성을 높이고 데이터 수명 동안 효과적인 스토리지를 제공합니다.

Ceph Object Gateway의 S3 API는 현재 AWS 버킷 라이프사이클 구성 작업의 하위 집합을 지원합니다.

  • 만료
  • NoncurrentVersionExpiration
  • AbortIncompleteMultipartUpload

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 스토리지 클러스터의 모든 노드에 대한 루트 수준 액세스.

9.13.1. 버킷 라이프사이클에 대한 병렬 스레드 처리

Ceph Object Gateway를 사용하면 여러 Ceph Object Gateway 인스턴스에서 버킷 라이프사이클의 병렬 스레드 처리를 수행할 수 있습니다. 병렬로 실행되는 스레드 수를 늘리면 Ceph Object Gateway에서 대규모 워크로드를 보다 효율적으로 처리할 수 있습니다. 또한 Ceph Object Gateway는 이제 in-order numbering을 사용하는 대신 인덱스 shard 열거에 번호가 지정된 시퀀스를 사용합니다.

9.13.2. 버킷 라이프사이클 최적화

Ceph 구성 파일의 두 가지 옵션은 버킷 라이프사이클 처리 효율성에 영향을 미칩니다.

  • rgw_lc_max_worker 은 병렬로 실행할 라이프사이클 작업자 스레드 수를 지정합니다. 이를 통해 버킷 및 인덱스 샤드를 동시에 처리할 수 있습니다. 이 옵션의 기본값은 3입니다.
  • rgw_lc_max_wp_worker 은 각 라이프사이클 작업자 스레드의 작업 풀에 있는 스레드 수를 지정합니다. 이 옵션은 각 버킷에 대한 처리를 가속화하는 데 도움이 됩니다. 이 옵션의 기본값은 3입니다.

버킷이 많은 워크로드의 경우, 예를 들어 버킷의 수천 개가 있는 워크로드는 rgw_lc_max_worker 옵션의 값을 늘립니다.

버킷 수가 작지만 각 버킷에 더 많은 수의 오브젝트가 있는 워크로드의 경우, 수백 개의 thousands Cryostat- Cryostatconsider와 같이 rgw_lc_max_wp_worker 옵션의 값을 늘리면 됩니다.

참고

이러한 옵션 중 하나의 값을 늘리기 전에 현재 스토리지 클러스터 성능과 Ceph Object Gateway 사용률을 확인하십시오. 이 옵션 중 하나에 대해 값을 10개 이상 할당하는 것은 권장되지 않습니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 스토리지 클러스터의 모든 노드에 대한 루트 수준 액세스.

프로세스

  1. 병렬로 실행할 스레드 수를 늘리려면 rgw_lc_max_worker 값을 3 에서 9 사이의 값으로 설정합니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_lc_max_worker 7
    Copy to Clipboard Toggle word wrap

  2. 각 스레드의 작업 풀의 스레드 수를 늘리려면 rgw_lc_max_wp_worker 의 값을 3 에서 9 사이의 값으로 설정합니다.

    예제

    [ceph: root@host01 /]# ceph config set client.rgw rgw_lc_max_wp_worker 7
    Copy to Clipboard Toggle word wrap

  3. Ceph Object Gateway를 다시 시작하여 변경된 설정을 적용할 수 있습니다.
  4. 스토리지 클러스터를 모니터링하여 증가한 값이 성능에 부정적인 영향을 미치지 않는지 확인합니다.

9.14. Amazon S3 클라우드 서비스로 데이터 전환

스토리지 클래스를 사용하여 라이프사이클 구성의 일부로 데이터를 원격 클라우드 서비스로 전환하여 비용을 줄이고 관리 효율성을 개선할 수 있습니다. 전환은 단방향이며 데이터는 원격 영역에서 다시 전환할 수 없습니다. 이 기능은 Amazon(S3)과 같은 여러 클라우드 공급자로 데이터 전환을 활성화하는 것입니다.

cloud-s3계층 유형으로 사용하여 데이터를 전환해야 하는 원격 클라우드 S3 오브젝트 저장소 서비스를 구성합니다. 여기에는 데이터 풀이 필요하지 않으며 zonegroup 배치 대상의 관점에서 정의됩니다.

사전 요구 사항

  • Ceph Object Gateway가 설치된 Red Hat Ceph Storage 클러스터입니다.
  • 원격 클라우드 서비스에 대한 사용자 인증 정보, Amazon S3.
  • Amazon S3에서 생성된 대상 경로입니다.
  • 부트스트랩 노드에 s3cmd 가 설치되어 있어야 합니다.
  • Amazon AWS는 데이터를 다운로드하도록 로컬로 구성되었습니다.

프로세스

  1. 액세스 키와 시크릿 키가 있는 사용자를 생성합니다.

    구문

    radosgw-admin user create --uid=USER_NAME --display-name="DISPLAY_NAME" [--access-key ACCESS_KEY --secret-key SECRET_KEY]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin user create --uid=test-user --display-name="test-user" --access-key a21e86bce636c3aa1 --secret-key cf764951f1fdde5e
    {
        "user_id": "test-user",
        "display_name": "test-user",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [
            {
                "user": "test-user",
                "access_key": "a21e86bce636c3aa1",
                "secret_key": "cf764951f1fdde5e"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw",
        "mfa_ids": []
    }
    Copy to Clipboard Toggle word wrap

  2. 부트스트랩된 노드에서 계층 유형이 있는 스토리지 클래스를 cloud-s3 으로 추가합니다.

    참고

    --tier-type=cloud-s3 옵션을 사용하여 스토리지 클래스를 생성하면 나중에 다른 스토리지 클래스 유형으로 수정할 수 없습니다.

    구문

    radosgw-admin zonegroup placement add --rgw-zonegroup =ZONE_GROUP_NAME \
                                --placement-id=PLACEMENT_ID \
                                --storage-class =STORAGE_CLASS_NAME \
                                --tier-type=cloud-s3
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup placement add --rgw-zonegroup=default \
                                                     --placement-id=default-placement \
                                                     --storage-class=CLOUDTIER \
                                                     --tier-type=cloud-s3
    [
        {
            "key": "default-placement",
            "val": {
                "name": "default-placement",
                "tags": [],
                "storage_classes": [
                    "CLOUDTIER",
                    "STANDARD"
                ],
                "tier_targets": [
                    {
                        "key": "CLOUDTIER",
                        "val": {
                            "tier_type": "cloud-s3",
                            "storage_class": "CLOUDTIER",
                            "retain_head_object": "false",
                            "s3": {
                                "endpoint": "",
                                "access_key": "",
                                "secret": "",
                                "host_style": "path",
                                "target_storage_class": "",
                                "target_path": "",
                                "acl_mappings": [],
                                "multipart_sync_threshold": 33554432,
                                "multipart_min_part_size": 33554432
                            }
                        }
                    }
                ]
            }
        }
    ]
    Copy to Clipboard Toggle word wrap

  3. update storage_class:

    참고

    클러스터가 다중 사이트 설정의 일부인 경우 period update --commit 를 실행하여 zonegroup 변경 사항이 다중 사이트의 모든 영역으로 전파됩니다.

    참고

    access_keysecret 이 숫자로 시작하지 않는지 확인합니다.

    필수 매개변수는 다음과 같습니다.

    • access_key 는 특정 연결에 사용되는 원격 클라우드 S3 액세스 키입니다.
    • Secret 은 원격 클라우드 S3 서비스의 시크릿 키입니다.
    • endpoint 는 원격 클라우드 S3 서비스 끝점의 URL입니다.
    • 리전 (AWS의 경우)은 원격 클라우드 S3 서비스 지역 이름입니다.

    선택적 매개변수는 다음과 같습니다.

    • target_path 는 대상 경로가 생성되는 방법을 정의합니다. 대상 경로는 소스 bucket-name/object-name 이 추가되는 접두사를 지정합니다. 지정하지 않으면 생성된 target_path가 rgwx-ZONE_GROUP_NAME-STORAGE_CLASS_NAME-cloud-bucket 입니다.
    • target_storage_class 는 오브젝트가 전환하는 대상 스토리지 클래스를 정의합니다. 지정하지 않으면 오브젝트가 STANDARD 스토리지 클래스로 전환됩니다.
    • retain_head_object true인 경우 cloud로 전환된 오브젝트의 메타데이터를 유지합니다. false(기본값)인 경우 오브젝트는 전환 후 삭제됩니다. 이 옵션은 현재 버전이 지정된 오브젝트에서 무시됩니다.
    • multipart_sync_threshold 는 이 크기 이상의 오브젝트가 다중 파트 업로드를 사용하여 클라우드로 전환되도록 지정합니다.
    • multipart_min_part_size 는 multipart 업로드를 사용하여 오브젝트를 전환할 때 사용할 최소 부분 크기를 지정합니다.

      구문

      radosgw-admin zonegroup placement modify --rgw-zonegroup ZONE_GROUP_NAME \
                                               --placement-id PLACEMENT_ID \
                                               --storage-class STORAGE_CLASS_NAME  \
                                               --tier-config=endpoint=AWS_ENDPOINT_URL,\
                                               access_key=AWS_ACCESS_KEY,secret=AWS_SECRET_KEY,\
                                               target_path="TARGET_BUCKET_ON_AWS",\
                                               multipart_sync_threshold=44432,\
                                               multipart_min_part_size=44432,\
                                               retain_head_object=true
                                                region=REGION_NAME
      Copy to Clipboard Toggle word wrap

      예제

      [ceph: root@host01 /]# radosgw-admin zonegroup placement modify --rgw-zonegroup default
                                                                      --placement-id default-placement \
                                                                      --storage-class CLOUDTIER \
                                                                      --tier-config=endpoint=http://10.0.210.010:8080,\
                                                                      access_key=a21e86bce636c3aa2,secret=cf764951f1fdde5f,\
                                                                      target_path="dfqe-bucket-01",\
                                                                      multipart_sync_threshold=44432,\
                                                                      multipart_min_part_size=44432,\
                                                                      retain_head_object=true
                                                                      region=us-east-1
      
      [
          {
              "key": "default-placement",
              "val": {
                  "name": "default-placement",
                  "tags": [],
                  "storage_classes": [
                      "CLOUDTIER",
                      "STANDARD",
                      "cold.test",
                      "hot.test"
                  ],
                  "tier_targets": [
                      {
                          "key": "CLOUDTIER",
                          "val": {
                              "tier_type": "cloud-s3",
                              "storage_class": "CLOUDTIER",
                              "retain_head_object": "true",
                              "s3": {
                                  "endpoint": "http://10.0.210.010:8080",
                                  "access_key": "a21e86bce636c3aa2",
                                  "secret": "cf764951f1fdde5f",
                                  "region": "",
                                  "host_style": "path",
                                  "target_storage_class": "",
                                  "target_path": "dfqe-bucket-01",
                                  "acl_mappings": [],
                                  "multipart_sync_threshold": 44432,
                                  "multipart_min_part_size": 44432
                              }
                          }
                      }
                  ]
              }
          }
      ]
      ]
      Copy to Clipboard Toggle word wrap

  4. Ceph Object Gateway를 다시 시작합니다.

    구문

    ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host 01 /]# ceph orch restart rgw.rgw.1
    
    Scheduled to restart rgw.rgw.1.host03.vkfldf on host 'host03’
    Copy to Clipboard Toggle word wrap

  5. 쉘을 종료하고 root 사용자로 부트스트랩된 노드에서 Amazon S3를 구성합니다.

    예제

    [root@host01 ~]# s3cmd --configure
    
    Enter new values or accept defaults in brackets with Enter.
    Refer to user manual for detailed description of all options.
    
    Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
    Access Key: a21e86bce636c3aa2
    Secret Key: cf764951f1fdde5f
    Default Region [US]:
    
    Use "s3.amazonaws.com" for S3 Endpoint and not modify it to the target Amazon S3.
    S3 Endpoint [s3.amazonaws.com]: 10.0.210.78:80
    
    Use "%(bucket)s.s3.amazonaws.com" to the target Amazon S3. "%(bucket)s" and "%(location)s" vars can be used
    if the target S3 system supports dns based buckets.
    DNS-style bucket+hostname:port template for accessing a bucket [%(bucket)s.s3.amazonaws.com]: 10.0.210.78:80
    
    Encryption password is used to protect your files from reading
    by unauthorized persons while in transfer to S3
    Encryption password:
    Path to GPG program [/usr/bin/gpg]:
    
    When using secure HTTPS protocol all communication with Amazon S3
    servers is protected from 3rd party eavesdropping. This method is
    slower than plain HTTP, and can only be proxied with Python 2.7 or newer
    Use HTTPS protocol [Yes]: No
    
    On some networks all internet access must go through a HTTP proxy.
    Try setting it here if you can't connect to S3 directly
    HTTP Proxy server name:
    
    New settings:
      Access Key: a21e86bce636c3aa2
      Secret Key: cf764951f1fdde5f
      Default Region: US
      S3 Endpoint: 10.0.210.78:80
      DNS-style bucket+hostname:port template for accessing a bucket: 10.0.210.78:80
      Encryption password:
      Path to GPG program: /usr/bin/gpg
      Use HTTPS protocol: False
      HTTP Proxy server name:
      HTTP Proxy server port: 0
    
    Test access with supplied credentials? [Y/n] Y
    Please wait, attempting to list all buckets...
    Success. Your access key and secret key worked fine :-)
    
    Now verifying that encryption works...
    Not configured. Never mind.
    
    Save settings? [y/N] y
    Configuration saved to '/root/.s3cfg'
    Copy to Clipboard Toggle word wrap

  6. S3 버킷을 생성합니다.

    구문

    s3cmd mb s3://NAME_OF_THE_BUCKET_FOR_S3
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# s3cmd mb s3://awstestbucket
    Bucket 's3://awstestbucket/' created
    Copy to Clipboard Toggle word wrap

  7. 파일을 생성하고 모든 데이터를 입력하고 이를 S3 서비스로 이동합니다.

    구문

    s3cmd put FILE_NAME  s3://NAME_OF_THE_BUCKET_ON_S3
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# s3cmd put test.txt s3://awstestbucket
    
    upload: 'test.txt' -> 's3://awstestbucket/test.txt'  [1 of 1]
     21 of 21   100% in    1s    16.75 B/s  done
    Copy to Clipboard Toggle word wrap

  8. 라이프사이클 구성 전환 정책을 생성합니다.

    구문

    <LifecycleConfiguration>
      <Rule>
        <ID>RULE_NAME</ID>
        <Filter>
          <Prefix></Prefix>
        </Filter>
        <Status>Enabled</Status>
        <Transition>
          <Days>DAYS</Days>
          <StorageClass>STORAGE_CLASS_NAME</StorageClass>
        </Transition>
      </Rule>
    </LifecycleConfiguration>
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]# cat lc_cloud.xml
    <LifecycleConfiguration>
      <Rule>
        <ID>Archive all objects</ID>
        <Filter>
          <Prefix></Prefix>
        </Filter>
        <Status>Enabled</Status>
        <Transition>
          <Days>2</Days>
          <StorageClass>CLOUDTIER</StorageClass>
        </Transition>
      </Rule>
    </LifecycleConfiguration>
    Copy to Clipboard Toggle word wrap

  9. 라이프사이클 구성 전환 정책을 설정합니다.

    구문

    s3cmd setlifecycle FILE_NAME s3://NAME_OF_THE_BUCKET_FOR_S3
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]#  s3cmd setlifecycle lc_config.xml s3://awstestbucket
    
    s3://awstestbucket/: Lifecycle Policy updated
    Copy to Clipboard Toggle word wrap

  10. cephadm 쉘에 로그인합니다.

    예제

    [root@host 01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  11. Ceph Object Gateway를 다시 시작합니다.

    구문

    ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host 01 /]# ceph orch restart rgw.rgw.1
    
    Scheduled to restart rgw.rgw.1.host03.vkfldf on host 'host03’
    Copy to Clipboard Toggle word wrap

검증

  1. 소스 클러스터에서 radosgw-admin lc list 명령을 사용하여 데이터가 S3로 이동했는지 확인합니다.

    예제

    [ceph: root@host01 /]# radosgw-admin lc list
    [
        {
            "bucket": ":awstestbucket:552a3adb-39e0-40f6-8c84-00590ed70097.54639.1",
            "started": "Mon, 26 Sep 2022 18:32:07 GMT",
            "status": "COMPLETE"
        }
    ]
    Copy to Clipboard Toggle word wrap

  2. 클라우드 끝점에서 오브젝트 전환을 확인합니다.

    예제

    [root@client ~]$ radosgw-admin bucket list
    [
        "awstestbucket"
    ]
    Copy to Clipboard Toggle word wrap

  3. 버킷의 오브젝트를 나열합니다.

    예제

    [root@host01 ~]$ aws s3api list-objects --bucket awstestbucket --endpoint=http://10.0.209.002:8080
    {
        "Contents": [
            {
                "Key": "awstestbucket/test",
                "LastModified": "2022-08-25T16:14:23.118Z",
                "ETag": "\"378c905939cc4459d249662dfae9fd6f\"",
                "Size": 29,
                "StorageClass": "STANDARD",
                "Owner": {
                    "DisplayName": "test-user",
                    "ID": "test-user"
                }
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

  4. S3 버킷의 콘텐츠를 나열합니다.

    예제

    [root@host01 ~]# s3cmd ls s3://awstestbucket
    2022-08-25 09:57            0  s3://awstestbucket/test.txt
    Copy to Clipboard Toggle word wrap

  5. 파일의 정보를 확인합니다.

    예제

    [root@host01 ~]# s3cmd info s3://awstestbucket/test.txt
    s3://awstestbucket/test.txt (object):
       File size: 0
       Last mod:  Mon, 03 Aug 2022 09:57:49 GMT
       MIME type: text/plain
       Storage:   CLOUDTIER
       MD5 sum:   991d2528bb41bb839d1a9ed74b710794
       SSE:       none
       Policy:    none
       CORS:      none
       ACL:       test-user: FULL_CONTROL
       x-amz-meta-s3cmd-attrs: atime:1664790668/ctime:1664790668/gid:0/gname:root/md5:991d2528bb41bb839d1a9ed74b710794/mode:33188/mtime:1664790668/uid:0/uname:root
    Copy to Clipboard Toggle word wrap

  6. Amazon S3에서 로컬로 데이터를 다운로드합니다.

    1. AWS를 구성합니다.

      예제

      [client@client01 ~]$ aws configure
      
      AWS Access Key ID [****************6VVP]:
      AWS Secret Access Key [****************pXqy]:
      Default region name [us-east-1]:
      Default output format [json]:
      Copy to Clipboard Toggle word wrap

    2. AWS 버킷의 콘텐츠를 나열합니다.

      예제

      [client@client01 ~]$ aws s3 ls s3://dfqe-bucket-01/awstest
      PRE awstestbucket/
      Copy to Clipboard Toggle word wrap

    3. S3에서 데이터를 다운로드합니다.

      예제

      [client@client01 ~]$ aws s3 cp s3://dfqe-bucket-01/awstestbucket/test.txt .
      
      download: s3://dfqe-bucket-01/awstestbucket/test.txt to ./test.txt
      Copy to Clipboard Toggle word wrap

9.15. Azure 클라우드 서비스로 데이터 전환

스토리지 클래스를 사용하여 라이프사이클 구성의 일부로 데이터를 원격 클라우드 서비스로 전환하여 비용을 줄이고 관리 효율성을 개선할 수 있습니다. 전환은 단방향이며 데이터는 원격 영역에서 다시 전환할 수 없습니다. 이 기능은 Azure와 같은 여러 클라우드 공급자로 데이터 전환을 활성화하는 것입니다. AWS 구성과의 주요 차이점 중 하나는 MCG(Multi-cloud Gateway)를 구성하고 MCG를 사용하여 S3 프로토콜에서 Azure Blob으로 변환해야 한다는 것입니다.

cloud-s3계층 유형으로 사용하여 데이터를 전환해야 하는 원격 클라우드 S3 오브젝트 저장소 서비스를 구성합니다. 여기에는 데이터 풀이 필요하지 않으며 zonegroup 배치 대상의 관점에서 정의됩니다.

사전 요구 사항

  • Ceph Object Gateway가 설치된 Red Hat Ceph Storage 클러스터입니다.
  • 원격 클라우드 서비스의 사용자 인증 정보인 Azure.
  • Azure는 데이터를 다운로드하기 위해 로컬로 구성되었습니다.
  • 부트스트랩 노드에 s3cmd 가 설치되어 있어야 합니다.
  • MCG 네임스페이스의 에 대한 Azure 컨테이너를 생성합니다. 이 예에서는 mcgnamespace 입니다.

프로세스

  1. 액세스 키와 시크릿 키가 있는 사용자를 생성합니다.

    구문

    radosgw-admin user create --uid=USER_NAME --display-name="DISPLAY_NAME" [--access-key ACCESS_KEY --secret-key SECRET_KEY]
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin user create --uid=test-user --display-name="test-user" --access-key a21e86bce636c3aa1 --secret-key cf764951f1fdde5e
    {
        "user_id": "test-user",
        "display_name": "test-user",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "subusers": [],
        "keys": [
            {
                "user": "test-user",
                "access_key": "a21e86bce636c3aa1",
                "secret_key": "cf764951f1fdde5e"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "default_storage_class": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw",
        "mfa_ids": []
    }
    Copy to Clipboard Toggle word wrap

  2. root 사용자로 사용자 인증 정보를 사용하여 AWS CLI를 구성하고 기본 배치를 사용하여 버킷을 생성합니다.

    구문

    aws s3 --ca-bundle CA_PERMISSION --profile rgw  --endpoint ENDPOINT_URL --region default mb s3://BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]$ aws s3   --ca-bundle  /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw  --endpoint https://host02.example.com:8043 --region default mb s3://transition
    Copy to Clipboard Toggle word wrap

  3. 버킷이 배치 규칙과 함께 default-placement 를 사용하고 있는지 확인합니다.

    예제

    [root@host01 ~]# radosgw-admin bucket stats --bucket transition
    {
        "bucket": "transition",
        "num_shards": 11,
        "tenant": "",
        "zonegroup": "b29b0e50-1301-4330-99fc-5cdcfc349acf",
        "placement_rule": "default-placement",
        "explicit_placement": {
            "data_pool": "",
            "data_extra_pool": "",
            "index_pool": ""
        },
    Copy to Clipboard Toggle word wrap

  4. OpenShift Data Foundation(ODF)이 배포된 OpenShift Container Platform (OCP) 클러스터에 로그인합니다.

    예제

    [root@host01 ~]$ oc project openshift-storage
    [root@host01 ~]$ oc get clusterversion
    NAME      VERSION   AVAILABLE   PROGRESSING   SINCE   STATUS
    version   4.11.6    True        False         4d1h    Cluster version is 4.11.6
    
    [root@host01 ~]$ oc get storagecluster
    NAME                 AGE   PHASE   EXTERNAL   CREATED AT             VERSION
    ocs-storagecluster   4d    Ready              2023-06-27T15:23:01Z   4.11.0
    Copy to Clipboard Toggle word wrap

  5. Azure의 OCP 클러스터에서 실행되는 MCG(Multi-cloud gateway) 네임스페이스 Azure 버킷을 구성합니다.

    구문

    noobaa namespacestore create azure-blob az --account-key='ACCOUNT_KEY' --account-name='ACCOUNT_NAME' --target-blob-container='_AZURE_CONTAINER_NAME'
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]$ noobaa namespacestore create azure-blob  az --account-key='iq3+6hRtt9bQ46QfHKQ0nSm2aP+tyMzdn8dBSRW4XWrFhY+1nwfqEj4hk2q66nmD85E/o5OrrUqo+AStkKwm9w==' --account-name='transitionrgw' --target-blob-container='mcgnamespace'
    Copy to Clipboard Toggle word wrap

  6. 네임스페이스 저장소를 가리키는 MCG 버킷 클래스를 생성합니다.

    예제

    [root@host01 ~]$ noobaa bucketclass create namespace-bucketclass single aznamespace-bucket-class --resource az -n openshift-storage
    Copy to Clipboard Toggle word wrap

  7. 클라우드로의 전환을 위한 OBC(오브젝트 버킷 클레임)를 생성합니다.

    구문

    noobaa obc create OBC_NAME --bucketclass aznamespace-bucket-class -n openshift-storage
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]$ noobaa obc create rgwobc --bucketclass aznamespace-bucket-class -n openshift-storage
    Copy to Clipboard Toggle word wrap

    참고

    OBC에서 제공하는 인증 정보를 사용하여 Ceph Object Gateway에서 영역 그룹 배치를 구성합니다.

  8. 부트스트랩 노드에서 Azure에서 이전에 구성한 MCG의 기본 영역 그룹 내의 기본 배치에서 계층 유형을 cloud-s3 으로 사용하여 스토리지 클래스를 생성합니다.

    참고

    --tier-type=cloud-s3 옵션을 사용하여 스토리지 클래스를 생성하면 나중에 다른 스토리지 클래스 유형으로 수정할 수 없습니다.

    구문

    radosgw-admin zonegroup placement add --rgw-zonegroup =ZONE_GROUP_NAME \
                                --placement-id=PLACEMENT_ID \
                                --storage-class =STORAGE_CLASS_NAME \
                                --tier-type=cloud-s3
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup placement add --rgw-zonegroup=default \
                                                     --placement-id=default-placement \
                                                     --storage-class=AZURE \
                                                     --tier-type=cloud-s3
    [
        {
            "key": "default-placement",
            "val": {
                "name": "default-placement",
                "tags": [],
                "storage_classes": [
                    "AZURE",
                    "STANDARD"
                ],
                "tier_targets": [
                    {
                        "key": "AZURE",
                        "val": {
                            "tier_type": "cloud-s3",
                            "storage_class": "AZURE",
                            "retain_head_object": "false",
                            "s3": {
                                "endpoint": "",
                                "access_key": "",
                                "secret": "",
                                "host_style": "path",
                                "target_storage_class": "",
                                "target_path": "",
                                "acl_mappings": [],
                                "multipart_sync_threshold": 33554432,
                                "multipart_min_part_size": 33554432
                            }
                        }
                    }
                ]
            }
        }
    ]
    Copy to Clipboard Toggle word wrap

  9. 클라우드 S3 클라우드 스토리지 클래스를 구성합니다.

    구문

    radosgw-admin zonegroup placement modify --rgw-zonegroup ZONE_GROUP_NAME \
                                             --placement-id PLACEMENT_ID \
                                             --storage-class STORAGE_CLASS_NAME  \
                                             --tier-config=endpoint=ENDPOINT_URL,\
                                             access_key=ACCESS_KEY,secret=SECRET_KEY,\
                                             target_path="TARGET_BUCKET_ON",\
                                             multipart_sync_threshold=44432,\
                                             multipart_min_part_size=44432,\
                                             retain_head_object=true
                                             region=REGION_NAME
    Copy to Clipboard Toggle word wrap

    중요

    retain_head_object 매개변수를 true 로 설정하면 전환된 오브젝트를 나열할 오브젝트의 메타데이터 또는 헤드가 유지됩니다.

    예제

    [ceph: root@host01 /]# radosgw-admin zonegroup placement modify --rgw-zonegroup default
                                                                    --placement-id default-placement \
                                                                    --storage-class AZURE \
                                                                    --tier-config=endpoint="https://s3-openshift-storage.apps.ocp410.0e73azopenshift.com",\
                                                                    access_key=a21e86bce636c3aa2,secret=cf764951f1fdde5f,\
                                                                    target_path="dfqe-bucket-01",\
                                                                    multipart_sync_threshold=44432,\
                                                                    multipart_min_part_size=44432,\
                                                                    retain_head_object=true
                                                                    region=us-east-1
    
    [
        {
            "key": "default-placement",
            "val": {
                "name": "default-placement",
                "tags": [],
                "storage_classes": [
                    "AZURE",
                    "STANDARD",
                    "cold.test",
                    "hot.test"
                ],
                "tier_targets": [
                    {
                        "key": "AZURE",
                        "val": {
                            "tier_type": "cloud-s3",
                            "storage_class": "AZURE",
                            "retain_head_object": "true",
                            "s3": {
                                "endpoint": "https://s3-openshift-storage.apps.ocp410.0e73azopenshift.com",
                                "access_key": "a21e86bce636c3aa2",
                                "secret": "cf764951f1fdde5f",
                                "region": "",
                                "host_style": "path",
                                "target_storage_class": "",
                                "target_path": "dfqe-bucket-01",
                                "acl_mappings": [],
                                "multipart_sync_threshold": 44432,
                                "multipart_min_part_size": 44432
                            }
                        }
                    }
                ]
            }
        }
    ]
    ]
    Copy to Clipboard Toggle word wrap

  10. Ceph Object Gateway를 다시 시작합니다.

    구문

    ceph orch restart CEPH_OBJECT_GATEWAY_SERVICE_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host 01 /]# ceph orch restart client.rgw.objectgwhttps.host02.udyllp
    
    Scheduled to restart client.rgw.objectgwhttps.host02.udyllp on host 'host02
    Copy to Clipboard Toggle word wrap

  11. 이전에 생성된 버킷에 대한 라이프사이클 구성 전환 정책을 생성합니다. 이 예에서 버킷은 전환 입니다.

    구문

    cat transition.json
    {
        "Rules": [
            {
                "Filter": {
                    "Prefix": ""
                },
                "Status": "Enabled",
                "Transitions": [
                    {
                        "Days": 30,
                        "StorageClass": "STORAGE_CLASS"
                    }
                ],
                "ID": "TRANSITION_ID"
            }
        ]
            }
    Copy to Clipboard Toggle word wrap

    참고

    30일이 지난 버킷의 모든 오브젝트는 AZURE 라는 클라우드 스토리지 클래스로 전송됩니다.

    예제

    [root@host01 ~]$ cat transition.json
    {
        "Rules": [
            {
                "Filter": {
                    "Prefix": ""
                },
                "Status": "Enabled",
                "Transitions": [
                    {
                        "Days": 30,
                        "StorageClass": "AZURE"
                    }
                ],
                "ID": "Transition Objects in bucket to AZURE Blob after 30 days"
            }
        ]
            }
    Copy to Clipboard Toggle word wrap

  12. AWS CLI를 사용하여 버킷 라이프사이클 구성을 적용합니다.

    구문

     aws s3api --ca-bundle CA_PERMISSION --profile rgw --endpoint ENDPOINT_URL--region default put-bucket-lifecycle-configuration --lifecycle-configuration  file://BUCKET.json --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]$ aws s3api   --ca-bundle  /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw  --endpoint https://host02.example.com:8043 --region default put-bucket-lifecycle-configuration --lifecycle-configuration  file://transition.json --bucket transition
    Copy to Clipboard Toggle word wrap

  13. 선택 사항: 라이프사이클 구성을 가져옵니다.

    구문

     aws s3api --ca-bundle CA_PERMISSION --profile rgw --endpoint ENDPOINT_URL--region default get-bucket-lifecycle-configuration --lifecycle-configuration  file://BUCKET.json --bucket BUCKET_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [root@host01 ~]$ aws s3api   --ca-bundle  /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw  --endpoint https://host02.example.com:8043 --region default get-bucket-lifecycle-configuration --bucket transition
    {
        "Rules": [
            {
                "ID": "Transition Objects in bucket to AZURE Blob after 30 days",
                "Prefix": "",
                "Status": "Enabled",
                "Transitions": [
                    {
                        "Days": 30,
                        "StorageClass": "AZURE"
                    }
                ]
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

  14. 선택 사항: radosgw-admin lc list 명령을 사용하여 라이프사이클 구성을 가져옵니다.

    예제

    [root@host 01 ~]# radosgw-admin lc list
    [
        {
            "bucket": ":transition:d9c4f708-5598-4c44-9d36-849552a08c4d.169377.1",
            "started": "Thu, 01 Jan 1970 00:00:00 GMT",
            "status": "UNINITIAL"
        }
    ]
    Copy to Clipboard Toggle word wrap

    참고

    UNINITAL 상태는 라이프사이클 구성이 처리되지 않음을 나타냅니다. 전환 프로세스가 완료된 후 COMPLETED 상태로 이동합니다.

  15. cephadm 쉘에 로그인합니다.

    예제

    [root@host 01 ~]# cephadm shell
    Copy to Clipboard Toggle word wrap

  16. Ceph Object Gateway 데몬을 다시 시작합니다.

    구문

    ceph orch daemon CEPH_OBJECT_GATEWAY_DAEMON_NAME
    Copy to Clipboard Toggle word wrap

    예제

    [ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgwhttps.host02.udyllp
    [ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgw.host02.afwvyq
    [ceph: root@host 01 /]# ceph orch daemon restart rgw.objectgw.host05.ucpsrr
    Copy to Clipboard Toggle word wrap

  17. 소스 클러스터에서 Azure로 데이터를 마이그레이션합니다.

    예제

    [root@host 01 ~]# for i in 1 2 3 4 5
    do
    aws s3 --ca-bundle  /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw --endpoint https://host02.example.com:8043 --region default cp /etc/hosts s3://transition/transition$i
    done
    Copy to Clipboard Toggle word wrap

  18. 데이터 전환을 확인합니다.

    예제

    [root@host 01 ~]# aws s3 --ca-bundle  /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw  --endpoint https://host02.example.com:8043 --region default ls s3://transition
    2023-06-30 10:24:01       3847 transition1
    2023-06-30 10:24:04       3847 transition2
    2023-06-30 10:24:07       3847 transition3
    2023-06-30 10:24:09       3847 transition4
    2023-06-30 10:24:13       3847 transition5
    Copy to Clipboard Toggle word wrap

  19. rados ls 명령을 사용하여 데이터가 Azure로 이동했는지 확인합니다.

    예제

    [root@host 01 ~]# rados ls -p default.rgw.buckets.data | grep transition
    d9c4f708-5598-4c44-9d36-849552a08c4d.169377.1_transition1
    d9c4f708-5598-4c44-9d36-849552a08c4d.169377.1_transition4
    d9c4f708-5598-4c44-9d36-849552a08c4d.169377.1_transition2
    d9c4f708-5598-4c44-9d36-849552a08c4d.169377.1_transition3
    d9c4f708-5598-4c44-9d36-849552a08c4d.169377.1_transition5
    Copy to Clipboard Toggle word wrap

  20. 데이터가 전환되지 않으면 lc process 명령을 실행할 수 있습니다.

    예제

    [root@host 01 ~]# radosgw-admin lc process
    Copy to Clipboard Toggle word wrap

    이렇게 하면 라이프사이클 프로세스가 모든 버킷 라이프사이클 정책을 시작하고 평가하게 됩니다. 그런 다음 필요한 경우 데이터 전환을 시작합니다.

검증

  1. radosgw-admin lc list 명령을 실행하여 전환 완료를 확인합니다.

    예제

    [root@host 01 ~]#  radosgw-admin lc list
    [
        {
            "bucket": ":transition:d9c4f708-5598-4c44-9d36-849552a08c4d.170017.5",
            "started": "Mon, 30 Jun 2023-06-30 16:52:56 GMT",
            "status": "COMPLETE"
        }
    ]
    Copy to Clipboard Toggle word wrap

  2. 버킷의 오브젝트를 나열합니다.

    예제

    [root@host01 ~]$ aws s3api list-objects --bucket awstestbucket --endpoint=http://10.0.209.002:8080
    {
        "Contents": [
            {
                "Key": "awstestbucket/test",
                "LastModified": "2023-06-25T16:14:23.118Z",
                "ETag": "\"378c905939cc4459d249662dfae9fd6f\"",
                "Size": 29,
                "StorageClass": "STANDARD",
                "Owner": {
                    "DisplayName": "test-user",
                    "ID": "test-user"
                }
            }
        ]
    }
    Copy to Clipboard Toggle word wrap

  3. 클러스터의 오브젝트를 나열합니다.

    예제

    [root@host01 ~]$ aws s3 --ca-bundle  /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw  --endpoint https://host02.example.com:8043 --region default ls s3://transition
    2023-06-30 17:52:56          0 transition1
    2023-06-30 17:51:59          0 transition2
    2023-06-30 17:51:59          0 transition3
    2023-06-30 17:51:58          0 transition4
    2023-06-30 17:51:59          0 transition5
    Copy to Clipboard Toggle word wrap

    개체는 크기가 0 입니다. 개체를 나열할 수 있지만 Azure로 전환되므로 복사할 수 없습니다.

  4. S3 API를 사용하여 오브젝트의 헤드를 확인합니다.

    예제

    [root@host01 ~]$ aws s3api --ca-bundle  /etc/pki/ca-trust/source/anchors/myCA.pem --profile rgw  --endpoint https://host02.example.com:8043 --region default head-object --key transition1 --bucket transition
    {
        "AcceptRanges": "bytes",
        "LastModified": "2023-06-31T16:52:56+00:00",
        "ContentLength": 0,
        "ETag": "\"46ecb42fd0def0e42f85922d62d06766\"",
        "ContentType": "binary/octet-stream",
        "Metadata": {},
        "StorageClass": "CLOUDTIER"
    }
    Copy to Clipboard Toggle word wrap

    스토리지 클래스가 STANDARD 에서 CLOUDTIER 로 변경되었음을 확인할 수 있습니다.

10장. 테스트

스토리지 관리자는 기본 기능 테스트를 수행하여 Ceph Object Gateway 환경이 예상대로 작동하는지 확인할 수 있습니다. S3 인터페이스에 대한 초기 Ceph Object Gateway 사용자를 만든 다음 Swift 인터페이스에 대한 하위 사용자를 만들어 REST 인터페이스를 사용할 수 있습니다.

사전 요구 사항

  • 정상 실행 Red Hat Ceph Storage 클러스터.
  • Ceph Object Gateway 소프트웨어 설치.

10.1. S3 사용자 생성

게이트웨이를 테스트하려면 S3 사용자를 만들고 사용자에게 액세스 권한을 부여합니다. man radosgw-admin 명령은 추가 명령 옵션에 대한 정보를 제공합니다.

참고

다중 사이트 배포에서 master 영역 그룹의 마스터 영역에 항상 호스트에 사용자를 생성합니다.

사전 요구 사항

  • root 또는 sudo 액세스
  • Ceph Object Gateway 설치

프로세스

  1. S3 사용자를 생성합니다.

    구문

    radosgw-admin user create --uid=name --display-name="USER_NAME"
    Copy to Clipboard Toggle word wrap

    name 을 S3 사용자 이름으로 바꿉니다.

    예제

    [root@host01 ~]# radosgw-admin user create --uid="testuser" --display-name="Jane Doe"
    {
        "user_id": "testuser",
        "display_name": "Jane Doe",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "auid": 0,
        "subusers": [],
        "keys": [
            {
                "user": "testuser",
                "access_key": "CEP28KDIQXBKU4M15PDC",
                "secret_key": "MARoio8HFc8JxhEilES3dKFVj8tV3NOOYymihTLO"
            }
        ],
        "swift_keys": [],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw"
    }
    Copy to Clipboard Toggle word wrap

  2. access_keysecret_key 의 값에 JSON 이스케이프 문자(\)가 포함되어 있지 않은지 출력에서 확인합니다. 이러한 값은 액세스 검증에 필요하지만 값에 JSON 이스케이프 문자가 포함된 경우 특정 클라이언트는 처리할 수 없습니다. 이 문제를 해결하려면 다음 작업 중 하나를 수행하십시오.

    • JSON 이스케이프 문자를 제거합니다.
    • 문자열을 따옴표로 묶습니다.
    • 키를 다시 생성하고 JSON 이스케이프 문자가 포함되지 않도록 합니다.
    • 키와 시크릿을 수동으로 지정합니다.

    슬래시 / 가 유효한 문자이므로 제거하지 마십시오.

10.2. Swift 사용자 만들기

Swift 인터페이스를 테스트하려면 Swift 하위 사용자를 만듭니다. Swift 사용자를 만드는 것은 2단계 프로세스입니다. 첫 번째 단계는 사용자를 생성하는 것입니다. 두 번째 단계는 시크릿 키를 생성하는 것입니다.

참고

다중 사이트 배포에서 master 영역 그룹의 마스터 영역에 항상 호스트에 사용자를 생성합니다.

사전 요구 사항

  • Ceph Object Gateway 설치
  • Ceph Object Gateway 노드에 대한 루트 수준 액세스.

프로세스

  1. Swift 사용자를 만듭니다.

    구문

    radosgw-admin subuser create --uid=NAME --subuser=NAME:swift --access=full
    Copy to Clipboard Toggle word wrap

    NAME 을 Swift 사용자 이름으로 교체합니다. 예를 들면 다음과 같습니다.

    예제

    [root@host01 ~]# radosgw-admin subuser create --uid=testuser --subuser=testuser:swift --access=full
    {
        "user_id": "testuser",
        "display_name": "First User",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "auid": 0,
        "subusers": [
            {
                "id": "testuser:swift",
                "permissions": "full-control"
            }
        ],
        "keys": [
            {
                "user": "testuser",
                "access_key": "O8JDE41XMI74O185EHKD",
                "secret_key": "i4Au2yxG5wtr1JK01mI8kjJPM93HNAoVWOSTdJd6"
            }
        ],
        "swift_keys": [
            {
                "user": "testuser:swift",
                "secret_key": "13TLtdEW7bCqgttQgPzxFxziu0AgabtOc6vM8DLA"
            }
        ],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw"
    }
    Copy to Clipboard Toggle word wrap

  2. 시크릿 키를 생성합니다.

    구문

    radosgw-admin key create --subuser=NAME:swift --key-type=swift --gen-secret
    Copy to Clipboard Toggle word wrap

    NAME 을 Swift 사용자 이름으로 교체합니다. 예를 들면 다음과 같습니다.

    예제

    [root@host01 ~]# radosgw-admin key create --subuser=testuser:swift --key-type=swift --gen-secret
    {
        "user_id": "testuser",
        "display_name": "First User",
        "email": "",
        "suspended": 0,
        "max_buckets": 1000,
        "auid": 0,
        "subusers": [
            {
                "id": "testuser:swift",
                "permissions": "full-control"
            }
        ],
        "keys": [
            {
                "user": "testuser",
                "access_key": "O8JDE41XMI74O185EHKD",
                "secret_key": "i4Au2yxG5wtr1JK01mI8kjJPM93HNAoVWOSTdJd6"
            }
        ],
        "swift_keys": [
            {
                "user": "testuser:swift",
                "secret_key": "a4ioT4jEP653CDcdU8p4OuhruwABBRZmyNUbnSSt"
            }
        ],
        "caps": [],
        "op_mask": "read, write, delete",
        "default_placement": "",
        "placement_tags": [],
        "bucket_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "user_quota": {
            "enabled": false,
            "check_on_raw": false,
            "max_size": -1,
            "max_size_kb": 0,
            "max_objects": -1
        },
        "temp_url_keys": [],
        "type": "rgw"
    }
    Copy to Clipboard Toggle word wrap

10.3. S3 액세스 테스트

S3 액세스를 확인하기 위해 Python 테스트 스크립트를 작성하고 실행해야 합니다. S3 액세스 테스트 스크립트는 radosgw 에 연결하고 새 버킷을 생성하고 모든 버킷을 나열합니다. aws_access_key_idaws_secret_access_key 의 값은 radosgw_admin 명령에서 반환된 access_keysecret_key 값에서 가져옵니다.

사전 요구 사항

  • 실행 중인 Red Hat Ceph Storage 클러스터.
  • 노드에 대한 루트 수준 액세스.

프로세스

  1. Red Hat Enterprise Linux 9용 High Availability 리포지토리를 활성화합니다.

    subscription-manager repos --enable=rhel-9-for-x86_64-highavailability-rpms
    Copy to Clipboard Toggle word wrap
  2. python3-boto3 패키지를 설치합니다.

    dnf install python3-boto3
    Copy to Clipboard Toggle word wrap
  3. Python 스크립트를 생성합니다.

    vi s3test.py
    Copy to Clipboard Toggle word wrap
  4. 파일에 다음 내용을 추가합니다.

    구문

    import boto3
    
    endpoint = "" # enter the endpoint URL along with the port "http://URL:PORT"
    
    access_key = 'ACCESS'
    secret_key = 'SECRET'
    
    s3 = boto3.client(
            's3',
            endpoint_url=endpoint,
            aws_access_key_id=access_key,
            aws_secret_access_key=secret_key
            )
    
    s3.create_bucket(Bucket='my-new-bucket')
    
    response = s3.list_buckets()
    for bucket in response['Buckets']:
        print("{name}\t{created}".format(
    		name = bucket['Name'],
    		created = bucket['CreationDate']
    ))
    Copy to Clipboard Toggle word wrap

    1. endpoint 를 게이트웨이 서비스를 구성한 호스트의 URL로 바꿉니다. 즉, 게이트웨이 호스트입니다. 호스트 설정이 DNS로 확인되는지 확인합니다. PORT 를 게이트웨이의 포트 번호로 바꿉니다.
    2. ACCESSSECRETRed Hat Ceph Storage Object Gateway 가이드S3 사용자 만들기 섹션의 access_keysecret_key 값으로 바꿉니다.
  5. 스크립트를 실행합니다.

    python3 s3test.py
    Copy to Clipboard Toggle word wrap

    출력은 다음과 같습니다.

    my-new-bucket 2022-05-31T17:09:10.000Z
    Copy to Clipboard Toggle word wrap

10.4. Swift 액세스 테스트

Swift 액세스는 swift 명령줄 클라이언트를 통해 확인할 수 있습니다. man swift 명령은 사용 가능한 명령줄 옵션에 대한 자세한 정보를 제공합니다.

swift 클라이언트를 설치하려면 다음 명령을 실행합니다.

sudo yum install python-setuptools
sudo easy_install pip
sudo pip install --upgrade setuptools
sudo pip install --upgrade python-swiftclient
Copy to Clipboard Toggle word wrap

swift 액세스를 테스트하려면 다음 명령을 실행합니다.

구문

# swift -A http://IP_ADDRESS:PORT/auth/1.0 -U testuser:swift -K 'SWIFT_SECRET_KEY' list
Copy to Clipboard Toggle word wrap

IP_ADDRESS 를 게이트웨이 서버의 공용 IP 주소로 바꾸고 SWIFT_SECRET_KEYswift 사용자에게 발행한 radosgw-admin 키 create 명령의 출력에서 해당 값으로 바꿉니다. PORT 를 Beast와 함께 사용하는 포트 번호로 바꿉니다. 포트를 교체하지 않으면 기본적으로 포트 80 으로 설정됩니다.

예를 들면 다음과 같습니다.

swift -A http://10.10.143.116:80/auth/1.0 -U testuser:swift -K '244+fz2gSqoHwR3lYtSbIyomyPHf3i7rgSJrF/IA' list
Copy to Clipboard Toggle word wrap

출력은 다음과 같아야 합니다.

my-new-bucket
Copy to Clipboard Toggle word wrap

부록 A. 구성 참조

스토리지 관리자는 Ceph Object Gateway에 대한 다양한 옵션을 설정할 수 있습니다. 이러한 옵션에는 기본값이 포함되어 있습니다. 각 옵션을 지정하지 않으면 기본값은 자동으로 설정됩니다.

이러한 옵션에 대한 특정 값을 설정하려면 ceph config set client.rgw OPTION VALUE 명령을 사용하여 구성 데이터베이스를 업데이트합니다.

A.1. 일반 설정

Expand
이름설명유형Default

rgw_data

Ceph Object Gateway의 데이터 파일 위치를 설정합니다.

문자열

/var/lib/ceph/radosgw/$cluster-$id

rgw_enable_apis

지정된 API를 활성화합니다.

문자열

s3, s3website, swift, swift_auth, admin, sts, iam, notifications

rgw_cache_enabled

Ceph Object Gateway 캐시 사용 여부입니다.

부울

true

rgw_cache_lru_size

Ceph Object Gateway 캐시의 항목 수입니다.

정수

10000

rgw_socket_path

도메인 소켓의 소켓 경로입니다. FastCgiExternalServer 는 이 소켓을 사용합니다. 소켓 경로를 지정하지 않으면 Ceph Object Gateway가 외부 서버로 실행되지 않습니다. 여기서 지정하는 경로는 rgw.conf 파일에 지정된 경로와 동일해야 합니다.

문자열

해당 없음

rgw_host

Ceph Object Gateway 인스턴스의 호스트입니다. IP 주소 또는 호스트 이름이 될 수 있습니다.

문자열

0.0.0.0

rgw_port

인스턴스가 요청을 수신 대기하는 포트입니다. 지정하지 않으면 Ceph Object Gateway가 외부 FastCGI를 실행합니다.

문자열

없음

rgw_dns_name

제공된 도메인의 DNS 이름입니다. 영역 그룹 내에서 hostnames 설정도 참조하십시오.

문자열

없음

rgw_script_uri

요청에 설정되지 않은 경우 SCRIPT_URI 의 대체 값입니다.

문자열

없음

rgw_request_uri

요청에 설정되지 않은 경우 REQUEST_URI 의 대체 값입니다.

문자열

없음

rgw_print_continue

작동 중인 경우 100-continue 를 활성화합니다.

부울

true

rgw_remote_addr_param

원격 주소 매개 변수입니다. 예를 들어 원격 주소를 포함하는 HTTP 필드 또는 역방향 프록시가 작동하는 경우 X-Forwarded-For 주소가 사용됩니다.

문자열

REMOTE_ADDR

rgw_op_thread_timeout

열려 있는 스레드의 제한 시간(초)입니다.

정수

600

rgw_op_thread_suicide_timeout

Ceph Object Gateway 프로세스가 종료되기 전의 시간 (초)입니다. 0 으로 설정된 경우 비활성화되어 있습니다.

정수

0

rgw_thread_pool_size

스레드 풀의 크기입니다.

정수

512 스레드입니다.

rgw_num_control_oids

서로 다른 rgw 인스턴스 간의 캐시 동기화에 사용되는 알림 오브젝트 수입니다.

정수

8

rgw_init_timeout

Ceph Object Gateway가 초기화 시 포기되기 전의 시간(초)입니다.

정수

30

rgw_mime_types_file

MIME 유형의 경로 및 위치입니다. Swift에서 오브젝트 유형의 자동 감지에 사용됩니다.

문자열

/etc/mime.types

rgw_gc_max_objs

하나의 가비지 컬렉션 처리 주기에서 가비지 컬렉션에 의해 처리될 수 있는 최대 오브젝트 수입니다.

정수

32

rgw_gc_obj_min_wait

가비지 컬렉션 처리에 의해 개체를 제거 및 처리할 때까지의 최소 대기 시간입니다.

정수

2 * 3600

rgw_gc_processor_max_time

두 연속 가비지 수집 처리 주기의 시작 사이의 최대 시간입니다.

정수

3600

rgw_gc_processor_period

가비지 컬렉션 처리를 위한 사이클 시간입니다.

정수

3600

rgw_s3 success_create_obj_status

create-obj 의 대체 성공 상태 응답

정수

0

rgw_resolve_cname

rgw 가 요청 호스트 이름 필드의 DNS CNAME 레코드를 사용해야 하는지 여부(호스트 이름이 rgw_dns 이름과같지 않은 경우).

부울

false

rgw_object_stripe_size

Ceph Object Gateway 오브젝트의 오브젝트 스트라이프 크기입니다.

정수

4 << 20

rgw_extended_http_attrs

오브젝트에 설정할 수 있는 새 속성 세트를 추가합니다. 이러한 추가 속성은 오브젝트를 배치할 때 HTTP 헤더 필드를 통해 설정할 수 있습니다. 설정된 경우 오브젝트에서 GET/HEAD를 수행할 때 이러한 속성이 HTTP 필드로 반환됩니다.

문자열

없음. 예: "content_foo, content_bar"

rgw_exit_timeout_secs

무조건 종료되기 전에 프로세스를 대기하는 시간(초)입니다.

정수

120

rgw_get_obj_window_size

단일 오브젝트 요청의 창 크기(바이트)입니다.

정수

16 << 20

rgw_get_obj_max_req_size

Ceph Storage 클러스터에 전송된 단일 get 작업의 최대 요청 크기입니다.

정수

4 << 20

rgw_relaxed_s3_bucket_names

영역 그룹 버킷에 대해 완화된 S3 버킷 규칙을 활성화합니다.

부울

false

rgw_list buckets_max_chunk

사용자 버킷을 나열할 때 단일 작업에서 검색할 최대 버킷 수입니다.

정수

1000

rgw_override_bucket_index_max_shards

버킷 인덱스 오브젝트의 shard 수입니다. 값이 0 이면 샤딩이 없음을 나타냅니다. 버킷 목록 비용이 증가함에 따라 Red Hat은 너무 큰 값(예: 1000)을 설정하지 않는 것이 좋습니다.

이 변수는 [client] 또는 [global] 섹션에 설정해야 radosgw-admin 명령에 자동으로 적용됩니다.

정수

0

rgw_curl_wait_timeout_ms

특정 curl 호출에 대한 시간 제한(밀리초)입니다.

정수

1000

rgw_copy_obj_progress

긴 복사 작업 중에 오브젝트 진행 상황을 활성화합니다.

부울

true

rgw_copy_obj_progress_every_bytes

복사 진행률 출력 사이의 최소 바이트입니다.

정수

1024 * 1024

rgw_admin_entry

관리자 요청 URL의 진입점입니다.

문자열

admin

rgw_content_length_compat

CONTENT_LENGTH 및 HTTP_CONTENT_LENGTH 세트를 사용하여 FCGI 요청의 호환성 처리를 활성화합니다.

부울

false

rgw_bucket_default_quota_max_objects

버킷당 기본 최대 오브젝트 수입니다. 이 값은 다른 할당량이 지정되지 않은 경우 새 사용자에게 설정됩니다. 기존 사용자에게는 영향을 미치지 않습니다.

이 변수는 [client] 또는 [global] 섹션에 설정해야 radosgw-admin 명령에 자동으로 적용됩니다.

정수

-1

rgw_bucket_quota_ttl

캐시된 할당량 정보를 신뢰할 수 있는 시간(초)입니다. 이 시간 초과 후 할당량 정보는 클러스터에서 다시 가져옵니다.

정수

600

rgw_user_quota_bucket_sync_interval

클러스터와 동기화하기 전에 버킷 할당량 정보가 누적되는 시간(초)입니다. 이 기간 동안 다른 RGW 인스턴스는 이 인스턴스의 작업에서 버킷 할당량 통계가 변경되지 않습니다.

정수

180

rgw_user_quota_sync_interval

클러스터와 동기화하기 전에 사용자 할당량 정보가 누적되는 시간(초)입니다. 이 기간 동안 다른 RGW 인스턴스는 이 인스턴스의 작업에서 사용자 할당량 통계가 변경되지 않습니다.

정수

3600 * 24

log_meta

게이트웨이가 메타데이터 작업을 로깅하는지 여부를 결정하는 zone 매개변수입니다.

부울

false

log_data

게이트웨이가 데이터 작업을 로깅하는지 여부를 결정하는 zone 매개변수입니다.

부울

false

sync_from_all

영역이 모든 영역 그룹 피어에서 동기화되는지의 여부를 설정하거나 설정 해제하는 radosgw-admin 명령입니다.

부울

false

A.2. 풀 정보

Ceph 영역은 일련의 Ceph Storage 클러스터 풀에 매핑됩니다.

수동으로 생성된 풀과 비교. 생성된 풀

Ceph Object Gateway의 사용자 키에 쓰기 기능이 포함된 경우 게이트웨이에서 풀을 자동으로 만들 수 있습니다. 이 작업은 시작하기에 편리합니다. 그러나 Ceph Object Storage 클러스터는 Ceph 구성 파일에 설정되지 않은 경우 배치 그룹 기본값을 사용합니다. 또한 Ceph는 기본 CRUSH 계층 구조를 사용합니다. 이러한 설정은 프로덕션 시스템에 적합하지 않습니다.

Ceph Object Gateway의 기본 영역에 대한 기본 풀은 다음과 같습니다.

  • .rgw.root
  • .default.rgw.control
  • .default.rgw.meta
  • .default.rgw.log
  • .default.rgw.buckets.index
  • .default.rgw.buckets.data
  • .default.rgw.buckets.non-ec

Ceph Object Gateway는 영역별로 풀을 생성합니다. 풀을 수동으로 생성하는 경우 영역 이름 앞에 추가합니다. 시스템 풀은 시스템 제어, 로깅 및 사용자 정보와 관련된 오브젝트를 저장합니다. 규칙에 따라 이러한 풀 이름에는 풀 이름 앞에 영역 이름이 있습니다.

  • .<zone-name>.rgw.control: 제어 풀입니다.
  • .<zone-name>.log: 로그 풀에는 모든 버킷/컨테이너 및 create, read, update, delete와 같은 오브젝트 작업의 로그가 포함됩니다.
  • .<zone-name>.rgw.buckets.index: 이 풀은 버킷의 인덱스를 저장합니다.
  • .<zone-name>.rgw.buckets.data:이 풀은 버킷의 데이터를 저장합니다.
  • .<zone-name>.rgw.meta: 메타데이터 풀은 user_keys 및 기타 중요한 메타데이터를 저장합니다.
  • .<zone-name>.meta:users.uid: 사용자 ID 풀에는 고유한 사용자 ID 맵이 포함되어 있습니다.
  • .<zone-name>.meta:users.keys: 각 사용자 ID의 액세스 키와 시크릿 키가 포함됩니다.
  • .<zone-name>.meta:users.email: 이메일 풀에는 사용자 ID와 연결된 이메일 주소가 포함되어 있습니다.
  • .<zone-name>.meta:users.swift: Swift 풀에는 사용자 ID에 대한 Swift 하위 사용자 정보가 포함되어 있습니다.

Ceph Object Gateways는 버킷 인덱스(index_pool) 및 버킷 데이터(data_pool)에 대한 데이터를 배치 풀에 저장합니다. 이는 중복될 수 있습니다. 즉, 인덱스 및 데이터에 동일한 풀을 사용할 수 있습니다. 기본 배치의 인덱스 풀은 {zone-name}.rgw.buckets.index 이며 기본 배치의 데이터 풀은 {zone-name}.rgw.buckets 입니다.

Expand
이름설명유형Default

rgw_zonegroup_root_pool

모든 영역 그룹별 정보를 저장하는 풀입니다.

문자열

.rgw.root

rgw_zone_root_pool

영역별 정보를 저장하는 풀입니다.

문자열

.rgw.root

A.3. 라이프사이클 설정

스토리지 관리자는 Ceph Object Gateway에 대해 다양한 버킷 라이프사이클 옵션을 설정할 수 있습니다. 이러한 옵션에는 기본값이 포함되어 있습니다. 각 옵션을 지정하지 않으면 기본값은 자동으로 설정됩니다.

이러한 옵션에 대한 특정 값을 설정하려면 ceph config set client.rgw OPTION VALUE 명령을 사용하여 구성 데이터베이스를 업데이트합니다.

Expand
이름설명유형Default

rgw_lc_debug_interval

개발자는 만료 규칙을 며칠에서 초 단위로 스케일링하여 라이프사이클 규칙을 디버그하는 데만 사용합니다. Red Hat은 이 옵션을 프로덕션 클러스터에서 사용하지 않는 것이 좋습니다.

정수

-1

rgw_lc_lock_max_time

Ceph Object Gateway에서 내부적으로 사용하는 타임아웃 값입니다.

정수

90

rgw_lc_max_objs

RADOS 게이트웨이 내부 라이프사이클 작업 대기열의 분할을 제어하며 고의적인 재하드 워크플로우의 일부로만 설정해야 합니다. Red Hat 지원에 먼저 연락하지 않고 클러스터 설정 후에는 이 설정을 변경하지 않는 것이 좋습니다.

정수

32

rgw_lc_max_rules

버킷당 하나의 라이프사이클 구성 문서에 포함할 라이프사이클 규칙 수입니다. AWS(Amazon Web Service) 제한은 1000개의 규칙입니다.

정수

1000

rgw_lc_max_worker

병렬로 실행할 라이프사이클 작업자 스레드 수, 버킷 및 인덱스 shard를 동시에 처리합니다. Red Hat 지원팀에 연락하지 않고 10보다 큰 가치를 설정하는 것은 권장되지 않습니다.

정수

3

rgw_lc_max_wp_worker

각 라이프사이클 작업자 스레드가 병렬로 처리할 수 있는 버킷 수입니다. Red Hat 지원팀에 연락하지 않고 10개 이상의 가치를 설정하는 것은 권장되지 않습니다.

정수

3

rgw_lc_thread_delay

여러 지점에서 shard 처리에 삽입할 수 있는 지연 시간(밀리초)입니다. 기본값은 0입니다. 값을 10에서 100ms로 설정하면 RADOS Gateway 인스턴스에서 CPU 사용률이 줄어들고 포화 상태로 관찰되는 경우 ingest에 대한 라이프사이클 스레드의 워크로드 용량이 줄어듭니다.

정수

0

A.4. Swift 설정

Expand
이름설명유형Default

rgw_enforce_swift_acls

Swift ACL(액세스 제어 목록) 설정을 적용합니다.

부울

true

rgw_swift_token_expiration

Swift 토큰 만료 시간(초)입니다.

정수

24 * 3600

rgw_swift_url

Ceph Object Gateway Swift API의 URL입니다.

문자열

없음

rgw_swift_url_prefix

Swift API의 URL 접두사입니다(예: http://fqdn.com/swift ).

swift

해당 없음

rgw_swift_auth_url

v1 인증 토큰을 확인하기 위한 기본 URL(내부 Swift 인증을 사용하지 않는 경우).

문자열

없음

rgw_swift_auth_entry

Swift 인증 URL의 진입점입니다.

문자열

auth

A.5. 로깅 설정

Expand
이름설명유형Default

debug_rgw_datacache

낮은 수준의 D3N 로그는 debug_rgw_datacache 하위 시스템에서 활성화할 수 있습니다( 디버그_rgw_datacache=30)

정수

1/5

rgw_log_nonexistent_bucket

Ceph Object Gateway에서 존재하지 않는 버킷에 대한 요청을 기록할 수 있습니다.

부울

false

rgw_log_object_name

오브젝트 이름의 로깅 형식입니다. 형식 지정자에 대한 자세한 내용은 도움말 페이지 날짜를 참조하십시오.

날짜

%Y-%m-%d-%H-%i-%n

rgw_log_object_name_utc

기록된 오브젝트 이름에 UTC 시간이 포함되어 있는지 여부입니다. false 인 경우 현지 시간을 사용합니다.

부울

false

rgw_usage_max_shards

사용 로깅의 최대 shard 수입니다.

정수

32

rgw_usage_max_user_shards

단일 사용자의 사용 로깅에 사용되는 최대 shard 수입니다.

정수

1

rgw_enable_ops_log

Ceph Object Gateway 작업이 성공할 때마다 로깅을 활성화합니다.

부울

false

rgw_enable_usage_log

사용 로그를 활성화합니다.

부울

false

rgw_ops_log_rados

작업 로그를 Ceph Storage 클러스터 백엔드에 쓸지 여부입니다.

부울

true

rgw_ops_log_socket_path

작업 로그를 쓰기 위한 Unix 도메인 소켓입니다.

문자열

없음

rgw_ops_log_data-backlog

Unix 도메인 소켓에 기록된 작업에 대한 최대 데이터 백로그 데이터 크기입니다.

정수

5 << 20

rgw_usage_log_flush_threshold

동기적으로 플러시하기 전에 사용 로그의 더티 병합 항목 수입니다.

정수

1024

rgw_usage_log_tick_interval

n 초마다 보류 중인 사용 로그 데이터를 플러시합니다.

정수

30

rgw_intent_log_object_name

의도하는 로그 오브젝트 이름의 로깅 형식입니다. 형식 지정자에 대한 자세한 내용은 도움말 페이지 날짜를 참조하십시오.

날짜

%Y-%m-%d-%i-%n

rgw_intent_log_object_name_utc

의도 로그 오브젝트 이름에 UTC 시간이 포함되어 있는지 여부입니다. false 인 경우 현지 시간을 사용합니다.

부울

false

rgw_data_log_window

데이터 로그 항목(초)입니다.

정수

30

rgw_data_log_changes_size

데이터 변경 로그에 저장할 메모리 내 항목 수입니다.

정수

1000

rgw_data_log_num_shards

데이터 변경 로그를 유지할 shard(오브젝트) 수입니다.

정수

128

rgw_data_log_obj_prefix

데이터 로그의 오브젝트 이름 접두사입니다.

문자열

data_log

rgw_replica_log_obj_prefix

복제본 로그의 오브젝트 이름 접두사입니다.

문자열

복제본 로그

rgw_md_log_max_shards

메타데이터 로그의 최대 shard 수입니다.

정수

64

rgw_log_http_headers

ops 로그 항목과 함께 포함할 쉼표로 구분된 HTTP 헤더 목록입니다. 헤더 이름은 대소문자를 구분하지 않으며 전체 헤더 이름을 밑줄로 구분된 단어와 함께 사용합니다.

문자열

없음

참고

rgw_data_log_num_shards 값 변경은 지원되지 않습니다.

A.6. Keystone 설정

Expand
이름설명유형Default

rgw_keystone_url

Keystone 서버의 URL입니다.

문자열

없음

rgw_keystone_admin_token

Keystone 관리자 토큰(공유 시크릿).

문자열

없음

rgw_keystone_accepted_roles

요청을 처리하는 데 필요한 역할입니다.

문자열

Member, admin

rgw_keystone_token_cache_size

각 Keystone 토큰 캐시의 최대 항목 수입니다.

정수

10000

A.7. Keystone 통합 구성 옵션

구성 옵션을 Keystone에 통합할 수 있습니다. 사용 가능한 Keystone 통합 구성 옵션에 대한 자세한 내용은 아래를 참조하십시오.

중요

Ceph 구성 파일을 업데이트한 후 새 Ceph 구성 파일을 스토리지 클러스터의 모든 Ceph 노드에 복사해야 합니다.

rgw_s3_auth_use_keystone

설명
true 로 설정하면 Ceph Object Gateway가 Keystone을 사용하여 사용자를 인증합니다.
유형
부울
Default
false

nss_db_path

설명
NSS 데이터베이스의 경로입니다.
유형
문자열
Default
""

rgw_keystone_url

설명
Keystone 서버에서 관리 RESTful API의 URL입니다.
유형
문자열
Default
""

rgw_keystone_admin_token

설명
관리 요청을 위해 Keystone에서 내부적으로 구성된 토큰 또는 공유 시크릿입니다.
유형
문자열
Default
""

rgw_keystone_admin_user

설명
keystone admin 사용자 이름입니다.
유형
문자열
Default
""

rgw_keystone_admin_password

설명
keystone admin 사용자 암호입니다.
유형
문자열
Default
""

rgw_keystone_admin_tenant

설명
keystone v2.0의 Keystone admin 사용자 테넌트입니다.
유형
문자열
Default
""

rgw_keystone_admin_project

설명
keystone v3의 keystone admin 사용자 프로젝트입니다.
유형
문자열
Default
""

rgw_trust_forwarded_https

설명
Ceph Object Gateway 앞에 있는 프록시가 SSL 종료에 사용되는 경우 들어오는 http 연결이 안전한지 여부가 아닙니다. 연결이 안전한 시기를 결정할 때 프록시에서 보낸 전달된 및 X-forwarded 헤더를 신뢰하려면 이 옵션을 활성화합니다. 이는 주로 서버 측 암호화에 필요합니다.
유형
부울
Default
false

rgw_swift_account_in_url

설명
Swift 계정이 URL 경로에 인코딩되었는지 여부입니다. Ceph Object Gateway에서 공개적으로 읽을 수 있는 컨테이너 및 임시 URL을 지원하려면 이 옵션을 true 로 설정하고 Keystone 서비스 카탈로그를 업데이트해야 합니다.
유형
부울
Default
false

rgw_keystone_admin_domain

설명
Keystone admin 사용자 도메인입니다.
유형
문자열
Default
""

rgw_keystone_api_version

설명
사용할 Keystone API의 버전입니다. 유효한 옵션은 2 또는 3 입니다.
유형
정수
Default
2

rgw_keystone_accepted_roles

설명
요청을 처리하는 데 필요한 역할입니다.
유형
문자열
Default
멤버, 멤버, 관리자,

rgw_keystone_accepted_admin_roles

설명
사용자가 관리 권한을 얻을 수 있도록 하는 역할 목록입니다.
유형
문자열
Default
ResellerAdmin, swiftoperator

rgw_keystone_token_cache_size

설명
Keystone 토큰 캐시의 최대 항목 수입니다.
유형
정수
Default
10000

rgw_keystone_verify_ssl

설명
true Ceph가 Keystone의 SSL 인증서를 확인합니다.
유형
부울
Default
true

rgw_keystone_implicit_tenants

설명
동일한 이름의 테넌트에 새 사용자를 만듭니다. 대부분의 경우 이 값을 true 또는 false 로 설정합니다. 이전 버전의 Red Hat Ceph Storage와의 호환성을 위해 이 값을 s3 또는 swift 로 설정할 수도 있습니다. 이는 표시된 프로토콜만 암시적 테넌트를 사용하도록 ID 공간을 분할하는 효과가 있습니다. 일부 이전 버전의 Red Hat Ceph Storage는 Swift의 암시적 테넌트만 지원합니다.
유형
문자열
Default
false

rgw_max_attr_name_len

설명
메타데이터 이름의 최대 길이입니다. 0 검사를 건너뜁니다.
유형
크기
Default
0

rgw_max_attrs_num_in_req

설명
단일 요청과 함께 배치할 수 있는 최대 메타데이터 항목 수입니다.
유형
uint
Default
0

rgw_max_attr_size

설명
메타데이터 값의 최대 길이입니다. 0 검사를 건너 뛰기
유형
크기
Default
0

rgw_swift_versioning_enabled

설명
Swift 버전 관리를 활성화합니다.
유형
부울
Default
0 또는 1

rgw_keystone_accepted_reader_roles

설명
읽기에만 사용할 수 있는 역할 목록입니다.
유형
문자열
Default
""

rgw_swift_enforce_content_length

설명
컨테이너를 나열할 때 콘텐츠 길이 보내기
유형
문자열
Default
false`

A.8. LDAP 설정

Expand
이름설명유형예제

rgw_ldap_uri

URI 형식의 LDAP 서버 공백으로 구분된 목록입니다.

문자열

ldaps://<ldap.your.domain>

rgw_ldap_searchdn

기본 도메인이라고도 하는 LDAP 검색 도메인 이름입니다.

문자열

cn=users,cn=accounts,dc=example,dc=com

rgw_ldap_binddn

게이트웨이는 이 LDAP 항목과 바인딩됩니다(사용자 일치).

문자열

uid=admin,cn=users,dc=example,dc=com

rgw_ldap_secret

rgw_ldap_binddn 에 대한 자격 증명이 포함된 파일입니다.

문자열

/etc/openldap/secret

rgw_ldap_dnattr

Ceph 오브젝트 게이트웨이 사용자 이름이 포함된 LDAP 속성( binddns 양식).

문자열

uid

법적 공지

Copyright © 2025 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2026 Red Hat